| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package valuate
- import (
- "fmt"
- "github.com/Knetic/govaluate"
- "github.com/spf13/cast"
- )
- type (
- Expression = *govaluate.EvaluableExpression
- )
- func EvalInt32(expression Expression, args ...any) (int32, bool) {
- if expression == nil {
- return 0, false
- }
- // build parameters
- parameters := make(map[string]any)
- for i, arg := range args {
- key := fmt.Sprintf("x%d", i+1)
- parameters[key] = arg
- }
- evaluate, err := expression.Evaluate(parameters)
- if err != nil {
- return 0, false
- }
- result := cast.ToInt32(evaluate)
- return result, true
- }
- func EvalInt64(expression Expression, args ...any) (int64, bool) {
- if expression == nil {
- return 0, false
- }
- // build parameters
- parameters := make(map[string]any)
- for i, arg := range args {
- key := fmt.Sprintf("x%d", i+1)
- parameters[key] = arg
- }
- evaluate, err := expression.Evaluate(parameters)
- if err != nil {
- return 0, false
- }
- result := cast.ToInt64(evaluate)
- return result, true
- }
|