commit
cf683802b9
2 changed files with 40 additions and 19 deletions
|
|
@ -242,6 +242,13 @@ func (parser *TemplateParser) forStatementNode(sel *goquery.Selection) {
|
||||||
|
|
||||||
// Create a new node
|
// Create a new node
|
||||||
new := sel.Clone()
|
new := sel.Clone()
|
||||||
|
parser.removeParsed(new)
|
||||||
|
parser.data[itemVarName] = item
|
||||||
|
parser.data[indexVarName] = idx
|
||||||
|
|
||||||
|
// parser attributes
|
||||||
|
parser.parseElementAttrs(new)
|
||||||
|
parser.parsed(new)
|
||||||
|
|
||||||
// Set the key
|
// Set the key
|
||||||
parser.sequence = parser.sequence + 1
|
parser.sequence = parser.sequence + 1
|
||||||
|
|
@ -250,8 +257,6 @@ func (parser *TemplateParser) forStatementNode(sel *goquery.Selection) {
|
||||||
|
|
||||||
// Show the node
|
// Show the node
|
||||||
parser.show(new)
|
parser.show(new)
|
||||||
parser.data[itemVarName] = item
|
|
||||||
parser.data[indexVarName] = idx
|
|
||||||
|
|
||||||
if parser.option.Editor {
|
if parser.option.Editor {
|
||||||
parser.setSuiAttr(new, "generate", "true")
|
parser.setSuiAttr(new, "generate", "true")
|
||||||
|
|
@ -414,6 +419,10 @@ func (parser *TemplateParser) parsed(sel *goquery.Selection) {
|
||||||
sel.SetAttr("parsed", "true")
|
sel.SetAttr("parsed", "true")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (parser *TemplateParser) removeParsed(sel *goquery.Selection) {
|
||||||
|
sel.RemoveAttr("parsed")
|
||||||
|
}
|
||||||
|
|
||||||
func (parser *TemplateParser) hasParsed(sel *goquery.Selection) bool {
|
func (parser *TemplateParser) hasParsed(sel *goquery.Selection) bool {
|
||||||
if parseed, exist := sel.Attr("parsed"); exist && parseed == "true" {
|
if parseed, exist := sel.Attr("parsed"); exist && parseed == "true" {
|
||||||
return true
|
return true
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
"github.com/yaoapp/gou/process"
|
"github.com/yaoapp/gou/process"
|
||||||
"github.com/yaoapp/kun/any"
|
"github.com/yaoapp/kun/any"
|
||||||
|
"github.com/yaoapp/kun/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Cache the cache
|
// Cache the cache
|
||||||
|
|
@ -211,7 +212,11 @@ func (r *Request) call(p interface{}) (interface{}, error) {
|
||||||
process.WithSID(r.Sid)
|
process.WithSID(r.Sid)
|
||||||
}
|
}
|
||||||
|
|
||||||
return process.Exec()
|
v, err := process.Exec()
|
||||||
|
if err != nil {
|
||||||
|
log.Error("[Request] process %s %s", processName, err.Error())
|
||||||
|
}
|
||||||
|
return v, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Request) parseArgs(args []interface{}) ([]interface{}, error) {
|
func (r *Request) parseArgs(args []interface{}) ([]interface{}, error) {
|
||||||
|
|
@ -230,28 +235,35 @@ func (r *Request) parseArgs(args []interface{}) ([]interface{}, error) {
|
||||||
switch v := arg.(type) {
|
switch v := arg.(type) {
|
||||||
|
|
||||||
case string:
|
case string:
|
||||||
if strings.HasPrefix(v, "$") {
|
if !strings.HasPrefix(v, "$") {
|
||||||
key := strings.TrimLeft(v, "$")
|
args[i] = v
|
||||||
args[i] = key
|
break
|
||||||
if data.Has(key) {
|
}
|
||||||
v := data.Get(key)
|
|
||||||
args[i] = v
|
key := strings.TrimLeft(v, "$")
|
||||||
if strings.HasPrefix(key, "query.") || strings.HasPrefix(key, "header.") {
|
args[i] = key
|
||||||
switch arg := v.(type) {
|
if data.Has(key) {
|
||||||
case []interface{}:
|
v := data.Get(key)
|
||||||
if len(arg) == 1 {
|
args[i] = v
|
||||||
args[i] = arg[0]
|
if strings.HasPrefix(key, "query.") || strings.HasPrefix(key, "header.") {
|
||||||
}
|
switch arg := v.(type) {
|
||||||
case []string:
|
case []interface{}:
|
||||||
if len(arg) == 1 {
|
if len(arg) == 1 {
|
||||||
args[i] = arg[0]
|
args[i] = arg[0]
|
||||||
}
|
}
|
||||||
|
case []string:
|
||||||
|
if len(arg) == 1 {
|
||||||
|
args[i] = arg[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
|
||||||
|
case int, int8, int16, int32, int64, float32, float64, bool, []string, []int, []int8, []int16, []int32, []int64, []float32, []float64, []bool:
|
||||||
|
args[i] = v
|
||||||
|
break
|
||||||
|
|
||||||
case []interface{}:
|
case []interface{}:
|
||||||
res, err := r.parseArgs(v)
|
res, err := r.parseArgs(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue