Documentation
¶
Index ¶
- Constants
- Variables
- func Contain(a, b interface{}) interface{}
- func FloatVal(v interface{}) float64
- func GetArg(path string, args map[string]interface{}) interface{}
- func GetNumber(str string) (float64, bool)
- func Has(array []string, va string) bool
- func SpitExpr(exprs string) []string
- type Engine
- func (en *Engine) AddFunc(fname string, op FunctionOp)
- func (en *Engine) AddInfix(fname string, priority int32, op InfixOp)
- func (en *Engine) AddPrefix(fname string, op PrefixOp)
- func (eng *Engine) CalculateBract(opStack, nbStack *lls.Stack)
- func (eng *Engine) CalculateStack(opStack, nbStack *lls.Stack)
- func (eng *Engine) CalculateTop(opStack, nbStack *lls.Stack)
- func (en *Engine) Execute(expression string, args map[string]interface{}) interface{}
- func (eng *Engine) GetToken(pToken *Token, expr string) *Token
- func (eng *Engine) IsOpToken(tk *Token) bool
- func (eng *Engine) PushCurOpera(curTk *Token, opStack, nbStack *lls.Stack)
- func (en *Engine) SetPriority(infix string, priority int32)
- type FunctionOp
- type InfixOp
- type PrefixOp
- type Token
Constants ¶
View Source
const ( Variable string = "Variable" Func string = "function" PreOp string = "prefixOp" InfxOp string = "infixOp" Value string = "value" Array string = "array" Args string = "funcArgs" )
View Source
const ( Trim string = "Trim" IN string = "IN" NotIn string = "NotIN" Like string = "Like" Equal string = "==" Less string = "<" LessEqual string = "<=" AboveEqual string = ">=" Above string = ">" NotEqual string = "!=" Add string = "+" Sub string = "-" Mult string = "*" Div string = "/" Rest string = "%" And string = "&&" Or string = "||" Not string = "!" BraktLeft string = "(" BraktRight string = ")" ArrayLeft string = "[" ArrayRight string = "]" ItemSpit string = "," )
Variables ¶
View Source
var InfixOpSet = map[string]InfixOp{ Equal: func(v1, v2 interface{}) interface{} { return fmt.Sprint(v1) == fmt.Sprint(v2) }, Add: func(v1, v2 interface{}) interface{} { return FloatVal(v1) + FloatVal(v2) }, Sub: func(v1, v2 interface{}) interface{} { return FloatVal(v1) - FloatVal(v2) }, Mult: func(v1, v2 interface{}) interface{} { return FloatVal(v1) * FloatVal(v2) }, Div: func(v1, v2 interface{}) interface{} { return FloatVal(v1) / FloatVal(v2) }, Rest: func(v1, v2 interface{}) interface{} { return int64(FloatVal(v1)) % int64(FloatVal(v2)) }, And: func(v1, v2 interface{}) interface{} { return v1.(bool) && v2.(bool) }, Or: func(v1, v2 interface{}) interface{} { return v1.(bool) || v2.(bool) }, Less: func(v1, v2 interface{}) interface{} { return FloatVal(v1) < FloatVal(v2) }, LessEqual: func(v1, v2 interface{}) interface{} { return FloatVal(v1) <= FloatVal(v2) }, AboveEqual: func(v1, v2 interface{}) interface{} { return FloatVal(v1) >= FloatVal(v2) }, Above: func(v1, v2 interface{}) interface{} { return FloatVal(v1) > FloatVal(v2) }, NotEqual: func(v1, v2 interface{}) interface{} { return fmt.Sprint(v1) != fmt.Sprint(v2) }, IN: func(v1 interface{}, v2 interface{}) interface{} { return in(v1, v2) }, NotIn: func(v1 interface{}, v2 interface{}) interface{} { return notIn(v1, v2) }, Like: func(v1 interface{}, v2 interface{}) interface{} { return like(v1, v2) }, }
View Source
var OpFunctionSet = map[string]FunctionOp{ Trim: func(v ...interface{}) interface{} { v1 := fmt.Sprint(v) v1 = strings.Trim(v1, "[") v1 = strings.Trim(v1, "]") v1 = strings.Replace(v1, " ", "", -1) return strings.TrimSpace(v1) }, }
Functions ¶
Types ¶
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
func (*Engine) AddFunc ¶
func (en *Engine) AddFunc(fname string, op FunctionOp)
func (*Engine) CalculateBract ¶
func (*Engine) CalculateStack ¶
func (*Engine) CalculateTop ¶
func (*Engine) PushCurOpera ¶
func (*Engine) SetPriority ¶
Click to show internal directories.
Click to hide internal directories.