excellent

package
v0.25.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 9, 2019 License: AGPL-3.0 Imports: 12 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EvaluateExpression

func EvaluateExpression(env utils.Environment, context types.XValue, expression string) types.XValue

EvaluateExpression evalutes the passed in template, returning the typed value it evaluates to, which might be an error

func EvaluateTemplate

func EvaluateTemplate(env utils.Environment, context types.XValue, template string, allowedTopLevels []string) (types.XValue, error)

EvaluateTemplate tries to evaluate the passed in template into an object, this only works if the template is a single identifier or expression, ie: "@contact" or "@(first(contact.urns))". In cases which are not a single identifier or expression, we return the stringified value

func EvaluateTemplateAsString

func EvaluateTemplateAsString(env utils.Environment, context types.XValue, template string, allowedTopLevels []string) (string, error)

EvaluateTemplateAsString evaluates the passed in template returning the string value of its execution

func ResolveValue added in v0.8.0

func ResolveValue(env utils.Environment, variable types.XValue, key string) types.XValue

ResolveValue will resolve the passed in string variable given in dot notation and return the value as defined by the Resolvable passed in.

Example syntaxes:

foo.bar.0  - 0th element of bar slice within foo, could also be "0" key in bar map within foo
foo.bar[0] - same as above

Types

type Scanner added in v0.13.3

type Scanner interface {
	Scan() (XTokenType, string)
	SetUnescapeBody(bool)
}

Scanner is something which can scan tokens from input

func NewXScanner added in v0.6.2

func NewXScanner(r io.Reader, identifierTopLevels []string) Scanner

NewXScanner returns a new instance of our excellent scanner

type TemplateError added in v0.10.1

type TemplateError struct {
	// contains filtered or unexported fields
}

TemplateError is an error which occurs during evaluation of an expression

func (TemplateError) Error added in v0.10.1

func (e TemplateError) Error() string

type TemplateErrors

type TemplateErrors struct {
	// contains filtered or unexported fields
}

TemplateErrors represents the list of all errors encountered during evaluation of a template

func NewTemplateErrors added in v0.10.1

func NewTemplateErrors() *TemplateErrors

func (*TemplateErrors) Add added in v0.10.1

func (e *TemplateErrors) Add(expression, message string)

func (*TemplateErrors) Error

func (e *TemplateErrors) Error() string

Error returns a single string describing all the errors encountered

func (*TemplateErrors) HasErrors added in v0.10.1

func (e *TemplateErrors) HasErrors() bool

type Visitor

type Visitor struct {
	gen.BaseExcellent2Visitor
	// contains filtered or unexported fields
}

func NewVisitor

func NewVisitor(env utils.Environment, resolver types.XValue) *Visitor

NewVisitor creates a new Excellent visitor

func (*Visitor) Visit

func (v *Visitor) Visit(tree antlr.ParseTree) interface{}

Visit the top level parse tree

func (*Visitor) VisitAdditionOrSubtraction

func (v *Visitor) VisitAdditionOrSubtraction(ctx *gen.AdditionOrSubtractionContext) interface{}

VisitAdditionOrSubtraction deals with addition and subtraction like 5+5 and 5-3

func (*Visitor) VisitArrayLookup

func (v *Visitor) VisitArrayLookup(ctx *gen.ArrayLookupContext) interface{}

VisitArrayLookup deals with lookups such as foo[5] or foo["key with spaces"]

func (*Visitor) VisitAtomReference

func (v *Visitor) VisitAtomReference(ctx *gen.AtomReferenceContext) interface{}

VisitAtomReference deals with visiting a single atom in our expression

func (*Visitor) VisitComparison

func (v *Visitor) VisitComparison(ctx *gen.ComparisonContext) interface{}

VisitComparison deals with visiting a comparison between two values, such as 5<3 or 3>5

func (*Visitor) VisitConcatenation

func (v *Visitor) VisitConcatenation(ctx *gen.ConcatenationContext) interface{}

VisitConcatenation deals with string concatenations like "foo" & "bar"

func (*Visitor) VisitContextReference

func (v *Visitor) VisitContextReference(ctx *gen.ContextReferenceContext) interface{}

VisitContextReference deals with references to variables in the context such as "foo"

func (*Visitor) VisitDotLookup

func (v *Visitor) VisitDotLookup(ctx *gen.DotLookupContext) interface{}

VisitDotLookup deals with lookups like foo.0 or foo.bar

func (*Visitor) VisitEquality

func (v *Visitor) VisitEquality(ctx *gen.EqualityContext) interface{}

VisitEquality deals with equality or inequality tests 5 = 5 and 5 != 5

func (*Visitor) VisitExponent

func (v *Visitor) VisitExponent(ctx *gen.ExponentContext) interface{}

VisitExponent deals with exponenets such as 5^5

func (*Visitor) VisitFalse

func (v *Visitor) VisitFalse(ctx *gen.FalseContext) interface{}

VisitFalse deals with the `false` reserved word

func (*Visitor) VisitFunctionCall

func (v *Visitor) VisitFunctionCall(ctx *gen.FunctionCallContext) interface{}

VisitFunctionCall deals with function calls like TITLE(foo.bar)

func (*Visitor) VisitFunctionParameters

func (v *Visitor) VisitFunctionParameters(ctx *gen.FunctionParametersContext) interface{}

VisitFunctionParameters deals with the parameters to a function call

func (*Visitor) VisitMultiplicationOrDivision

func (v *Visitor) VisitMultiplicationOrDivision(ctx *gen.MultiplicationOrDivisionContext) interface{}

VisitMultiplicationOrDivision deals with division and multiplication such as 5*5 or 5/2

func (*Visitor) VisitNegation

func (v *Visitor) VisitNegation(ctx *gen.NegationContext) interface{}

VisitNegation deals with negations such as -5

func (*Visitor) VisitNull added in v0.9.2

func (v *Visitor) VisitNull(ctx *gen.NullContext) interface{}

VisitNull deals with the `null` reserved word

func (*Visitor) VisitNumberLiteral added in v0.9.4

func (v *Visitor) VisitNumberLiteral(ctx *gen.NumberLiteralContext) interface{}

VisitNumberLiteral deals with numbers like 123 or 1.5

func (*Visitor) VisitParentheses

func (v *Visitor) VisitParentheses(ctx *gen.ParenthesesContext) interface{}

VisitParentheses deals with expressions in parentheses such as (1+2)

func (*Visitor) VisitParse

func (v *Visitor) VisitParse(ctx *gen.ParseContext) interface{}

VisitParse handles our top level parser

func (*Visitor) VisitTextLiteral added in v0.9.4

func (v *Visitor) VisitTextLiteral(ctx *gen.TextLiteralContext) interface{}

VisitTextLiteral deals with string literals such as "asdf"

func (*Visitor) VisitTrue

func (v *Visitor) VisitTrue(ctx *gen.TrueContext) interface{}

VisitTrue deals with the `true` reserved word

type XErrorListener added in v0.10.21

type XErrorListener struct {
	*antlr.DefaultErrorListener
	// contains filtered or unexported fields
}

XErrorListener records synatx errors as XErrors

func NewErrorListener added in v0.6.2

func NewErrorListener(expression string) *XErrorListener

NewErrorListener creates a new error listener

func (*XErrorListener) Errors added in v0.10.21

func (l *XErrorListener) Errors() []types.XError

Errors returns the errors encountered so far

func (*XErrorListener) SyntaxError added in v0.10.21

func (l *XErrorListener) SyntaxError(recognizer antlr.Recognizer, offendingSymbol interface{}, line, column int, msg string, e antlr.RecognitionException)

SyntaxError handles a new syntax error encountered by the recognizer

type XTokenType added in v0.13.3

type XTokenType int

XTokenType is a set of types than can be scanned

const (
	// BODY - Not in expression
	BODY XTokenType = iota

	// IDENTIFIER - 'contact.age' in '@contact.age'
	IDENTIFIER

	// EXPRESSION - the body of an expression '1+2' in '@(1+2)'
	EXPRESSION

	// EOF - end of expression
	EOF
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL