specification

package
v0.0.0-...-5fcbd15 Latest Latest
Warning

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

Go to latest
Published: May 6, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Functions

func ExtractFieldPath

func ExtractFieldPath(n FieldNode) []string

Types

type Associativity

type Associativity string
const (
	LeftAssociative  Associativity = "LEFT"
	RightAssociative Associativity = "RIGHT"
	NonAssociative   Associativity = "NON"
)

type Context

type Context interface {
	ValuesByPath(...string) ([]any, error)
}

type EmptiableObject

type EmptiableObject interface {
	Visitable
	Parent() EmptiableObject
	Name() string
	IsEmpty() bool
}

type EmptyObjectNode

type EmptyObjectNode struct{}

func EmptyObject

func EmptyObject() EmptyObjectNode

func (EmptyObjectNode) Accept

func (n EmptyObjectNode) Accept(_ Visitor) error

func (EmptyObjectNode) IsEmpty

func (n EmptyObjectNode) IsEmpty() bool

func (EmptyObjectNode) Name

func (n EmptyObjectNode) Name() string

func (EmptyObjectNode) Parent

func (n EmptyObjectNode) Parent() EmptiableObject

type EqualOperand

type EqualOperand interface {
	Equal(EqualOperand) bool
}

type EvaluateVisitor

type EvaluateVisitor struct {
	Context
	// contains filtered or unexported fields
}

func NewEvaluateVisitor

func NewEvaluateVisitor(context Context) *EvaluateVisitor

func (EvaluateVisitor) CurrentValue

func (v EvaluateVisitor) CurrentValue() []any

func (EvaluateVisitor) Result

func (v EvaluateVisitor) Result() (bool, error)

func (*EvaluateVisitor) SetCurrentValue

func (v *EvaluateVisitor) SetCurrentValue(val []any)

func (*EvaluateVisitor) VisitField

func (v *EvaluateVisitor) VisitField(n FieldNode) error

func (*EvaluateVisitor) VisitInfix

func (v *EvaluateVisitor) VisitInfix(n InfixNode) error

func (*EvaluateVisitor) VisitObject

func (v *EvaluateVisitor) VisitObject(_ ObjectNode) error

func (*EvaluateVisitor) VisitPrefix

func (v *EvaluateVisitor) VisitPrefix(n PrefixNode) error

func (*EvaluateVisitor) VisitValue

func (v *EvaluateVisitor) VisitValue(n ValueNode) error

type FieldNode

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

func Field

func Field(object ObjectNode, name string) FieldNode

func (FieldNode) Accept

func (n FieldNode) Accept(v Visitor) error

func (FieldNode) Name

func (n FieldNode) Name() string

func (FieldNode) Object

func (n FieldNode) Object() ObjectNode

type GreaterThanEqualOperand

type GreaterThanEqualOperand interface {
	GreaterThanEqual(GreaterThanEqualOperand) bool
}

type GreaterThanOperand

type GreaterThanOperand interface {
	GreaterThan(GreaterThanOperand) bool
}

type InfixNode

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

func And

func And(left Visitable, rights ...Visitable) InfixNode

func Equal

func Equal(left, right Visitable) InfixNode

func GreaterThan

func GreaterThan(left, right Visitable) InfixNode

func GreaterThanEqual

func GreaterThanEqual(left, right Visitable) InfixNode

func NewInfixNode

func NewInfixNode(left Visitable, operator Operator, right Visitable, associativity Associativity) InfixNode

func NotEqual

func NotEqual(left, right Visitable) InfixNode

func (InfixNode) Accept

func (n InfixNode) Accept(v Visitor) error

func (InfixNode) Associativity

func (n InfixNode) Associativity() Associativity

func (InfixNode) Left

func (n InfixNode) Left() Visitable

func (InfixNode) Operator

func (n InfixNode) Operator() Operator

func (InfixNode) Right

func (n InfixNode) Right() Visitable

type LessThanEqualOperand

type LessThanEqualOperand interface {
	LessThanEqual(LessThanEqualOperand) bool
}

type LessThanOperand

type LessThanOperand interface {
	LessThan(LessThanOperand) bool
}

type ObjectNode

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

func Object

func Object(parent EmptiableObject, name string) ObjectNode

func (ObjectNode) Accept

func (n ObjectNode) Accept(v Visitor) error

func (ObjectNode) IsEmpty

func (n ObjectNode) IsEmpty() bool

func (ObjectNode) Name

func (n ObjectNode) Name() string

func (ObjectNode) Parent

func (n ObjectNode) Parent() EmptiableObject

type Operable

type Operable interface {
	Associativity() Associativity
	Operator() Operator
}

type Operator

type Operator string
const (
	OperatorEq  Operator = "="
	OperatorGt  Operator = ">"
	OperatorLt  Operator = "<"
	OperatorGte Operator = ">="
	OperatorLte Operator = "<="
	OperatorNe  Operator = "!="

	OperatorAnd Operator = "AND"
	OperatorOr  Operator = "OR"
	OperatorNot Operator = "NOT"

	OperatorPos Operator = "+"
	OperatorNeg Operator = "-"
)

type PrefixNode

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

func NewPrefixNode

func NewPrefixNode(operator Operator, operand Visitable, associativity Associativity) PrefixNode

func Not

func Not(operand Visitable) PrefixNode

func (PrefixNode) Accept

func (n PrefixNode) Accept(v Visitor) error

func (PrefixNode) Associativity

func (n PrefixNode) Associativity() Associativity

func (PrefixNode) Operand

func (n PrefixNode) Operand() Visitable

func (PrefixNode) Operator

func (n PrefixNode) Operator() Operator

type ValueNode

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

func Value

func Value(value any) ValueNode

func (ValueNode) Accept

func (n ValueNode) Accept(v Visitor) error

func (ValueNode) Value

func (n ValueNode) Value() any

type Visitable

type Visitable interface {
	Accept(Visitor) error
}

type Visitor

type Visitor interface {
	VisitObject(ObjectNode) error
	VisitField(FieldNode) error
	VisitValue(ValueNode) error
	VisitPrefix(PrefixNode) error
	VisitInfix(InfixNode) error
}

Jump to

Keyboard shortcuts

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