Versions in this module Expand all Collapse all v1 v1.3.0 Nov 1, 2023 Changes in this version + func Evaluate(expression string, parameter interface{}, opts ...Language) (interface{}, error) + func EvaluateWithContext(c context.Context, expression string, parameter interface{}, opts ...Language) (interface{}, error) + type Evaluable func(c context.Context, parameter interface{}) (interface{}, error) + func (e Evaluable) EvalBool(c context.Context, parameter interface{}) (bool, error) + func (e Evaluable) EvalFloat64(c context.Context, parameter interface{}) (float64, error) + func (e Evaluable) EvalInt(c context.Context, parameter interface{}) (int, error) + func (e Evaluable) EvalString(c context.Context, parameter interface{}) (string, error) + func (e Evaluable) IsConst() bool + type Evaluables []Evaluable + func (evs Evaluables) EvalStrings(c context.Context, parameter interface{}) ([]string, error) + type Language struct + func Arithmetic() Language + func Base() Language + func Bitmask() Language + func Constant(name string, value interface{}) Language + func DecimalArithmetic() Language + func DefaultExtension(ext func(context.Context, *Parser) (Evaluable, error)) Language + func Full(extensions ...Language) Language + func Function(name string, function interface{}) Language + func Ident() Language + func InfixBoolOperator(name string, f func(a, b bool) (interface{}, error)) Language + func InfixDecimalOperator(name string, f func(a, b decimal.Decimal) (interface{}, error)) Language + func InfixEvalOperator(name string, f func(a, b Evaluable) (Evaluable, error)) Language + func InfixNumberOperator(name string, f func(a, b float64) (interface{}, error)) Language + func InfixOperator(name string, f func(a, b interface{}) (interface{}, error)) Language + func InfixShortCircuit(name string, f func(a interface{}) (interface{}, bool)) Language + func InfixTextOperator(name string, f func(a, b string) (interface{}, error)) Language + func Init(ext func(context.Context, *Parser) (Evaluable, error)) Language + func JSON() Language + func NewLanguage(bases ...Language) Language + func Parentheses() Language + func PostfixOperator(name string, ext func(context.Context, *Parser, Evaluable) (Evaluable, error)) Language + func Precedence(name string, operatorPrecendence uint8) Language + func PrefixExtension(r rune, ext func(context.Context, *Parser) (Evaluable, error)) Language + func PrefixMetaPrefix(r rune, ...) Language + func PrefixOperator(name string, e Evaluable) Language + func PropositionalLogic() Language + func TernaryOperator() Language + func Text() Language + func VariableSelector(selector func(path Evaluables) Evaluable) Language + func (l *Language) CreateScanner(cs func() Scanner) + func (l Language) Evaluate(expression string, parameter interface{}) (interface{}, error) + func (l Language) EvaluateWithContext(c context.Context, expression string, parameter interface{}) (interface{}, error) + func (l Language) NewEvaluable(expression string) (Evaluable, error) + func (l Language) NewEvaluableWithContext(c context.Context, expression string) (Evaluable, error) + type Parser struct + func (*Parser) Const(value interface{}) Evaluable + func (p *Parser) Camouflage(unit string, expected ...rune) + func (p *Parser) Expected(unit string, expected ...rune) error + func (p *Parser) Next() rune + func (p *Parser) ParseExpression(c context.Context) (eval Evaluable, err error) + func (p *Parser) ParseNextExpression(c context.Context) (eval Evaluable, err error) + func (p *Parser) ParseSublanguage(c context.Context, l Language) (Evaluable, error) + func (p *Parser) Peek() rune + func (p *Parser) Scan() rune + func (p *Parser) SetIsIdentRuneFunc(fn func(ch rune, i int) bool) + func (p *Parser) SetMode(mode uint) + func (p *Parser) SetWhitespace(chars ...rune) + func (p *Parser) TokenText() string + func (p *Parser) Var(path ...Evaluable) Evaluable + type Scanner interface + GetIsIdentRune func() func(rune, int) bool + GetMode func() uint + GetPosition func() scanner.Position + GetWhitespace func() uint64 + Init func(reader io.Reader) + Next func() rune + Peek func() rune + Pos func() scanner.Position + Scan func() rune + SetError func(func(Scanner, string)) + SetFilename func(string) + SetIsIdentRune func(func(rune, int) bool) + SetMode func(uint) + SetWhitespace func(uint64) + TokenText func() string + Unquote func(string) (string, error) + type Selector interface + SelectGVal func(c context.Context, key string) (interface{}, error)