Compare commits
No commits in common. "037565c41e174020ccb96d11fd8f7a7c8eb46651" and "d64602cb00fa90888652343c69181879e4eaffff" have entirely different histories.
037565c41e
...
d64602cb00
@ -211,25 +211,6 @@ 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) {
|
||||||
@ -259,11 +240,6 @@ 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,10 +80,6 @@ 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 {
|
||||||
|
|||||||
@ -24,11 +24,6 @@ func NewSimpleStore() *SimpleStore {
|
|||||||
return ctx
|
return ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ss *SimpleStore) Init() {
|
|
||||||
ss.varStore = make(map[string]any)
|
|
||||||
ss.funcStore = make(map[string]ExprFunc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func filterRefName(name string) bool { return name[0] != '@' }
|
func filterRefName(name string) bool { return name[0] != '@' }
|
||||||
//func filterPrivName(name string) bool { return name[0] != '_' }
|
//func filterPrivName(name string) bool { return name[0] != '_' }
|
||||||
|
|
||||||
|
|||||||
@ -68,27 +68,3 @@ func TestFunctionGetFunc(t *testing.T) {
|
|||||||
t.Errorf(`(func() -> result = %v [%T], want = %v [%T]`, got, got, want, want)
|
t.Errorf(`(func() -> result = %v [%T], want = %v [%T]`, got, got, want, want)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGoFunction(t *testing.T) {
|
|
||||||
section := "Funcs"
|
|
||||||
inputs := []inputType{
|
|
||||||
/* 1 */ {`myName()`, "Celestino Amoroso", nil},
|
|
||||||
/* 2 */ {`myName("Peppino")`, "Peppino", nil},
|
|
||||||
}
|
|
||||||
|
|
||||||
myName := func(ctx ExprContext, name string, args map[string]any) (result any, err error) {
|
|
||||||
var ok bool
|
|
||||||
if result, ok = args["name"].(string); !ok {
|
|
||||||
err = ErrWrongParamType(name, "name", TypeString, args["name"])
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx := NewSimpleStore()
|
|
||||||
ctx.RegisterFunc("myName", NewGolangFunctor(myName), TypeString, []ExprFuncParam{
|
|
||||||
NewFuncParamFlagDef("name", PfOptional|PfDefault, "Celestino Amoroso"),
|
|
||||||
})
|
|
||||||
|
|
||||||
runCtxTestSuite(t, ctx, section, inputs)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user