Arg struct members are now exported
This commit is contained in:
parent
8ab2c28343
commit
024ff42be0
30
helpers.go
30
helpers.go
@ -20,8 +20,8 @@ func EvalString(ctx ExprContext, source string) (result any, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Arg struct {
|
type Arg struct {
|
||||||
name string
|
Name string
|
||||||
value any
|
Value any
|
||||||
}
|
}
|
||||||
|
|
||||||
func EvalStringA(source string, args ...Arg) (result any, err error) {
|
func EvalStringA(source string, args ...Arg) (result any, err error) {
|
||||||
@ -31,23 +31,23 @@ func EvalStringA(source string, args ...Arg) (result any, err error) {
|
|||||||
func EvalStringV(source string, args []Arg) (result any, err error) {
|
func EvalStringV(source string, args []Arg) (result any, err error) {
|
||||||
ctx := NewSimpleFuncStore()
|
ctx := NewSimpleFuncStore()
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
if isFunc(arg.value) {
|
if isFunc(arg.Value) {
|
||||||
if f, ok := arg.value.(FuncTemplate); ok {
|
if f, ok := arg.Value.(FuncTemplate); ok {
|
||||||
functor := &simpleFunctor{f: f}
|
functor := &simpleFunctor{f: f}
|
||||||
ctx.RegisterFunc(arg.name, functor, 0, -1)
|
ctx.RegisterFunc(arg.Name, functor, 0, -1)
|
||||||
} else {
|
} else {
|
||||||
err = fmt.Errorf("invalid function specification: %q", arg.name)
|
err = fmt.Errorf("invalid function specification: %q", arg.Name)
|
||||||
}
|
}
|
||||||
} else if integer, ok := anyInteger(arg.value); ok {
|
} else if integer, ok := anyInteger(arg.Value); ok {
|
||||||
ctx.SetVar(arg.name, integer)
|
ctx.SetVar(arg.Name, integer)
|
||||||
} else if float, ok := anyFloat(arg.value); ok {
|
} else if float, ok := anyFloat(arg.Value); ok {
|
||||||
ctx.SetVar(arg.name, float)
|
ctx.SetVar(arg.Name, float)
|
||||||
} else if _, ok := arg.value.(string); ok {
|
} else if _, ok := arg.Value.(string); ok {
|
||||||
ctx.SetVar(arg.name, arg.value)
|
ctx.SetVar(arg.Name, arg.Value)
|
||||||
} else if _, ok := arg.value.(bool); ok {
|
} else if _, ok := arg.Value.(bool); ok {
|
||||||
ctx.SetVar(arg.name, arg.value)
|
ctx.SetVar(arg.Name, arg.Value)
|
||||||
} else {
|
} else {
|
||||||
err = fmt.Errorf("unsupported type %T specified for item %q", arg.value, arg.name)
|
err = fmt.Errorf("unsupported type %T specified for item %q", arg.Value, arg.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user