x
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/cdle/sillyplus/utils"
|
||||
"github.com/dop251/goja"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/goccy/go-json"
|
||||
)
|
||||
@@ -215,3 +216,30 @@ func parseReply(str string) string {
|
||||
return MakeBucket(b_k[1]).GetString(b_k[2])
|
||||
})
|
||||
}
|
||||
|
||||
// 能处理字符:你好,我是${ user.name ?? 6 }
|
||||
func parseReply2(str string) string {
|
||||
re := regexp.MustCompile(`\$\{\s*([^{}]+)\s*\}`)
|
||||
return re.ReplaceAllStringFunc(str, func(match string) string {
|
||||
script := match[2 : len(match)-1]
|
||||
script = regexp.MustCompile(`(\w+)\.(\w+)`).ReplaceAllStringFunc(script, func(match string) string {
|
||||
parts := strings.Split(match, ".")
|
||||
return fmt.Sprintf(`Bucket("%s")["%s"]`, parts[0], parts[1])
|
||||
})
|
||||
vm := goja.New()
|
||||
vm.Set("Bucket", func(name string) interface{} {
|
||||
return JsBucket(vm, name, "", false)
|
||||
})
|
||||
v, err := vm.RunString(script)
|
||||
if err == nil {
|
||||
return v.String()
|
||||
}
|
||||
return match
|
||||
// b_k := strings.Split(bk, ".")
|
||||
// if len(b_k) != 3 {
|
||||
// return fmt.Sprintf("${%s}", bk)
|
||||
// }
|
||||
// return MakeBucket(b_k[1]).GetString(b_k[2])
|
||||
// return ""
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user