From cb2f6e874856d2e173111749702a59fdd509490a Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 10 Jan 2024 14:51:16 +0800 Subject: [PATCH] Refactor attribute handling in build and parser functions --- sui/core/build.go | 21 ++++++++------------- sui/core/parser.go | 14 +++++++++----- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/sui/core/build.go b/sui/core/build.go index 12857c1a..a72838ab 100644 --- a/sui/core/build.go +++ b/sui/core/build.go @@ -189,21 +189,16 @@ func (page *Page) parse(doc *goquery.Document, option *BuildOption, warnings []s // Set Attrs attrs := map[string]string{} if sel.Length() > 0 { - if page.Attrs != nil { - parentProps := Data{"$prop": page.Attrs} - for k, v := range page.Attrs { - if k == "is" { - continue - } - attrs[k], _ = parentProps.ReplaceUse(slotRe, v) + for _, attr := range sel.Nodes[0].Attr { + if attr.Key == "is" || attr.Key == "parsed" { + continue } - } else { - for _, attr := range sel.Nodes[0].Attr { - if attr.Key == "is" { - continue - } - attrs[attr.Key] = attr.Val + val := attr.Val + if page.Attrs != nil { + parentProps := Data{"$prop": page.Attrs} + val, _ = parentProps.ReplaceUse(slotRe, val) } + attrs[attr.Key] = val } } diff --git a/sui/core/parser.go b/sui/core/parser.go index 7a7490a9..0dd0c951 100644 --- a/sui/core/parser.go +++ b/sui/core/parser.go @@ -159,14 +159,18 @@ func (parser *TemplateParser) setStatementNode(sel *goquery.Selection) { } valueExp := sel.AttrOr("value", "") - val, err := parser.data.Exec(valueExp) - if err != nil { - log.Warn("Set %s: %s", valueExp, err) - parser.data[name] = nil + if stmtRe.MatchString(valueExp) { + val, err := parser.data.Exec(valueExp) + if err != nil { + log.Warn("Set %s: %s", valueExp, err) + parser.data[name] = valueExp + return + } + parser.data[name] = val return } - parser.data[name] = val + parser.data[name] = valueExp } func (parser *TemplateParser) parseElementAttrs(sel *goquery.Selection) {