Arg struct members are now exported

This commit is contained in:
Celestino Amoroso 2024-04-09 06:28:57 +02:00
parent 8ab2c28343
commit 024ff42be0

View File

@ -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)
} }
} }