New var() function added to the builtin set
This commit is contained in:
parent
f8d12b1a93
commit
037565c41e
@ -211,6 +211,25 @@ func evalFunc(ctx ExprContext, name string, args map[string]any) (result any, er
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func varFunc(ctx ExprContext, name string, args map[string]any) (result any, err error) {
|
||||||
|
var varName string
|
||||||
|
var ok bool
|
||||||
|
|
||||||
|
if varName, ok = args[ParamName].(string); !ok {
|
||||||
|
return nil, ErrWrongParamType(name, ParamName, TypeString, args[ParamName])
|
||||||
|
}
|
||||||
|
|
||||||
|
if result, ok = args[ParamValue]; ok && result != nil {
|
||||||
|
ctx.GetParent().UnsafeSetVar(varName, result)
|
||||||
|
// } else {
|
||||||
|
// err = ErrWrongParamType(name, ParamSource, TypeString, args[ParamSource])
|
||||||
|
// }
|
||||||
|
} else if result, ok = ctx.GetVar(varName); !ok {
|
||||||
|
err = ErrUnknownVar(name, varName)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//// import
|
//// import
|
||||||
|
|
||||||
func ImportBuiltinsFuncs(ctx ExprContext) {
|
func ImportBuiltinsFuncs(ctx ExprContext) {
|
||||||
@ -240,6 +259,11 @@ func ImportBuiltinsFuncs(ctx ExprContext) {
|
|||||||
ctx.RegisterFunc("eval", NewGolangFunctor(evalFunc), TypeAny, []ExprFuncParam{
|
ctx.RegisterFunc("eval", NewGolangFunctor(evalFunc), TypeAny, []ExprFuncParam{
|
||||||
NewFuncParam(ParamSource),
|
NewFuncParam(ParamSource),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ctx.RegisterFunc("var", NewGolangFunctor(varFunc), TypeAny, []ExprFuncParam{
|
||||||
|
NewFuncParam(ParamName),
|
||||||
|
NewFuncParamFlagDef(ParamValue, PfDefault, nil),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|||||||
@ -80,6 +80,10 @@ func ErrUnknownParam(funcName, paramName string) error {
|
|||||||
return fmt.Errorf("%s(): unknown parameter %q", funcName, paramName)
|
return fmt.Errorf("%s(): unknown parameter %q", funcName, paramName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ErrUnknownVar(funcName, varName string) error {
|
||||||
|
return fmt.Errorf("%s(): unknown variable %q", funcName, varName)
|
||||||
|
}
|
||||||
|
|
||||||
// --- Operator errors
|
// --- Operator errors
|
||||||
|
|
||||||
func ErrLeftOperandMustBeVariable(leftTerm, opTerm *term) error {
|
func ErrLeftOperandMustBeVariable(leftTerm, opTerm *term) error {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user