Files
streamsql/parser/condition.go
T
rulego-team 443dd9de28 重构
2025-03-04 19:02:25 +08:00

31 lines
553 B
Go

package parser
import (
"github.com/expr-lang/expr"
"github.com/expr-lang/expr/vm"
)
type Condition interface {
Evaluate(env interface{}) bool
}
type ExprCondition struct {
program *vm.Program
}
func NewExprCondition(expression string) (Condition, error) {
program, err := expr.Compile(expression)
if err != nil {
return nil, err
}
return &ExprCondition{program: program}, nil
}
func (ec *ExprCondition) Evaluate(env interface{}) bool {
result, err := expr.Run(ec.program, env)
if err != nil {
return false
}
return result.(bool)
}