Add support for s:set statement in parser.go
This commit is contained in:
parent
2453479fe3
commit
cec9a2cbd0
1 changed files with 23 additions and 0 deletions
|
|
@ -7,6 +7,7 @@ import (
|
|||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
"github.com/yaoapp/kun/log"
|
||||
"golang.org/x/net/html"
|
||||
)
|
||||
|
||||
|
|
@ -144,10 +145,32 @@ func (parser *TemplateParser) parseElementNode(sel *goquery.Selection) {
|
|||
parser.forStatementNode(sel)
|
||||
}
|
||||
|
||||
if sel.Get(0).Data == "s:set" {
|
||||
parser.setStatementNode(sel)
|
||||
}
|
||||
|
||||
// Parse the attributes
|
||||
parser.parseElementAttrs(sel)
|
||||
}
|
||||
|
||||
func (parser *TemplateParser) setStatementNode(sel *goquery.Selection) {
|
||||
|
||||
name := sel.AttrOr("name", "")
|
||||
if name == "" {
|
||||
return
|
||||
}
|
||||
|
||||
valueExp := sel.AttrOr("value", "")
|
||||
val, err := parser.data.Exec(valueExp)
|
||||
if err != nil {
|
||||
log.Warn("Set %s: %s", valueExp, err)
|
||||
parser.data[name] = nil
|
||||
return
|
||||
}
|
||||
|
||||
parser.data[name] = val
|
||||
}
|
||||
|
||||
func (parser *TemplateParser) parseElementAttrs(sel *goquery.Selection) {
|
||||
if len(sel.Nodes) < 0 {
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue