builtin-base: added functions set() and unset()
This commit is contained in:
parent
6c3a071a02
commit
b6952444ab
@ -236,6 +236,35 @@ func varFunc(ctx ExprContext, name string, args map[string]any) (result any, err
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setFunc(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 {
|
||||||
|
ctx.GetParent().UnsafeSetVar(varName, result)
|
||||||
|
} else {
|
||||||
|
err = ErrWrongParamType(name, ParamValue, TypeAny, args[ParamValue])
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func unsetFunc(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])
|
||||||
|
} else {
|
||||||
|
ctx.GetParent().DeleteVar(varName)
|
||||||
|
result = nil
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//// import
|
//// import
|
||||||
|
|
||||||
func ImportBuiltinsFuncs(ctx ExprContext) {
|
func ImportBuiltinsFuncs(ctx ExprContext) {
|
||||||
@ -270,6 +299,16 @@ func ImportBuiltinsFuncs(ctx ExprContext) {
|
|||||||
NewFuncParam(ParamName),
|
NewFuncParam(ParamName),
|
||||||
NewFuncParamFlagDef(ParamValue, PfDefault, nil),
|
NewFuncParamFlagDef(ParamValue, PfDefault, nil),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ctx.RegisterFunc("set", NewGolangFunctor(setFunc), TypeAny, []ExprFuncParam{
|
||||||
|
NewFuncParam(ParamName),
|
||||||
|
NewFuncParam(ParamValue),
|
||||||
|
})
|
||||||
|
|
||||||
|
ctx.RegisterFunc("unset", NewGolangFunctor(unsetFunc), TypeAny, []ExprFuncParam{
|
||||||
|
NewFuncParam(ParamName),
|
||||||
|
NewFuncParam(ParamValue),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user