Expressions now support function definition

This commit is contained in:
2024-04-02 04:36:03 +02:00
parent f58ec3ac32
commit 072dab4144
20 changed files with 376 additions and 143 deletions
+3 -2
View File
@@ -14,7 +14,7 @@ func EvalString(ctx exprContext, source string) (result any, err error) {
parser := NewParser(ctx)
if tree, err = parser.parse(scanner); err == nil {
result, err = tree.Eval(ctx)
result, err = tree.Eval(ctx, true)
}
return
}
@@ -33,7 +33,8 @@ func EvalStringV(source string, args []EvalArg) (result any, err error) {
for _, arg := range args {
if isFunc(arg.value) {
if f, ok := arg.value.(FuncTemplate); ok {
ctx.RegisterFunc(arg.name, f, 0, -1)
functor := &simpleFunctor{f: f}
ctx.RegisterFunc(arg.name, functor, 0, -1)
} else {
err = fmt.Errorf("invalid function specification: %q", arg.name)
}