[fix] sui parser and request
This commit is contained in:
parent
5ba6bfe749
commit
5054b8f6ec
2 changed files with 40 additions and 19 deletions
|
|
@ -242,6 +242,13 @@ func (parser *TemplateParser) forStatementNode(sel *goquery.Selection) {
|
|||
|
||||
// Create a new node
|
||||
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
|
||||
parser.sequence = parser.sequence + 1
|
||||
|
|
@ -250,8 +257,6 @@ func (parser *TemplateParser) forStatementNode(sel *goquery.Selection) {
|
|||
|
||||
// Show the node
|
||||
parser.show(new)
|
||||
parser.data[itemVarName] = item
|
||||
parser.data[indexVarName] = idx
|
||||
|
||||
if parser.option.Editor {
|
||||
parser.setSuiAttr(new, "generate", "true")
|
||||
|
|
@ -414,6 +419,10 @@ func (parser *TemplateParser) parsed(sel *goquery.Selection) {
|
|||
sel.SetAttr("parsed", "true")
|
||||
}
|
||||
|
||||
func (parser *TemplateParser) removeParsed(sel *goquery.Selection) {
|
||||
sel.RemoveAttr("parsed")
|
||||
}
|
||||
|
||||
func (parser *TemplateParser) hasParsed(sel *goquery.Selection) bool {
|
||||
if parseed, exist := sel.Attr("parsed"); exist && parseed == "true" {
|
||||
return true
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
jsoniter "github.com/json-iterator/go"
|
||||
"github.com/yaoapp/gou/process"
|
||||
"github.com/yaoapp/kun/any"
|
||||
"github.com/yaoapp/kun/log"
|
||||
)
|
||||
|
||||
// Cache the cache
|
||||
|
|
@ -211,7 +212,11 @@ func (r *Request) call(p interface{}) (interface{}, error) {
|
|||
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) {
|
||||
|
|
@ -230,28 +235,35 @@ func (r *Request) parseArgs(args []interface{}) ([]interface{}, error) {
|
|||
switch v := arg.(type) {
|
||||
|
||||
case string:
|
||||
if strings.HasPrefix(v, "$") {
|
||||
key := strings.TrimLeft(v, "$")
|
||||
args[i] = key
|
||||
if data.Has(key) {
|
||||
v := data.Get(key)
|
||||
args[i] = v
|
||||
if strings.HasPrefix(key, "query.") || strings.HasPrefix(key, "header.") {
|
||||
switch arg := v.(type) {
|
||||
case []interface{}:
|
||||
if len(arg) == 1 {
|
||||
args[i] = arg[0]
|
||||
}
|
||||
case []string:
|
||||
if len(arg) == 1 {
|
||||
args[i] = arg[0]
|
||||
}
|
||||
if !strings.HasPrefix(v, "$") {
|
||||
args[i] = v
|
||||
break
|
||||
}
|
||||
|
||||
key := strings.TrimLeft(v, "$")
|
||||
args[i] = key
|
||||
if data.Has(key) {
|
||||
v := data.Get(key)
|
||||
args[i] = v
|
||||
if strings.HasPrefix(key, "query.") || strings.HasPrefix(key, "header.") {
|
||||
switch arg := v.(type) {
|
||||
case []interface{}:
|
||||
if len(arg) == 1 {
|
||||
args[i] = arg[0]
|
||||
}
|
||||
case []string:
|
||||
if len(arg) == 1 {
|
||||
args[i] = arg[0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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{}:
|
||||
res, err := r.parseArgs(v)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue