mirror of
https://gitee.com/rulego/streamsql.git
synced 2026-07-17 09:01:12 +00:00
feat:增强函数系统,实现大量的函数
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package condition
|
||||
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user