eval

package
v0.34.0-rc.12 Latest Latest
Warning

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

Go to latest
Published: Feb 24, 2022 License: Apache-2.0 Imports: 12 Imported by: 1

Documentation

Index

Constants

View Source
const (
	FunctionWeight       = 5
	InArrayWeight        = 10
	HandlerWeight        = 50
	RegexpWeight         = 100
	InPatternArrayWeight = 1000
	IteratorWeight       = 2000
)

defines factor applied by specific operator

Variables

This section is empty.

Functions

func NewCookie

func NewCookie() uint32

NewCookie returns a new random cookie

func NotOfValue

func NotOfValue(value interface{}) (interface{}, error)

NotOfValue returns the NOT of a value

func PatternMatches added in v0.34.0

func PatternMatches(pattern string, str string) bool

PatternMatches matches a pattern against a string

func RandString

func RandString(n int) string

RandString returns a random string of the given length size

Types

type BoolArrayEvaluator

type BoolArrayEvaluator struct {
	EvalFnc     func(ctx *Context) []bool
	Field       Field
	Values      []bool
	Weight      int
	OpOverrides *OpOverrides
	// contains filtered or unexported fields
}

BoolArrayEvaluator returns an array of bool

func (*BoolArrayEvaluator) Eval

func (b *BoolArrayEvaluator) Eval(ctx *Context) interface{}

Eval returns the result of the evaluation

func (*BoolArrayEvaluator) GetField

func (b *BoolArrayEvaluator) GetField() string

GetField returns field name used by this evaluator

func (*BoolArrayEvaluator) IsPartial

func (b *BoolArrayEvaluator) IsPartial() bool

IsPartial returns whether the evaluator is partial

func (*BoolArrayEvaluator) IsScalar

func (b *BoolArrayEvaluator) IsScalar() bool

IsScalar returns whether the evaluator is a scalar

type BoolEvalFnc

type BoolEvalFnc = func(ctx *Context) bool

BoolEvalFnc describe a eval function return a boolean

type BoolEvaluator

type BoolEvaluator struct {
	EvalFnc     BoolEvalFnc
	Field       Field
	Value       bool
	Weight      int
	OpOverrides *OpOverrides
	// contains filtered or unexported fields
}

BoolEvaluator returns a bool as result of the evaluation

func And

func And(a *BoolEvaluator, b *BoolEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func ArrayBoolContains

func ArrayBoolContains(a *BoolEvaluator, b *BoolArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

ArrayBoolContains evaluates array of bool against a value

func BoolArrayEquals added in v0.34.0

func BoolArrayEquals(a *BoolEvaluator, b *BoolArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func BoolEquals

func BoolEquals(a *BoolEvaluator, b *BoolEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func DurationGreaterOrEqualThan

func DurationGreaterOrEqualThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func DurationGreaterThan

func DurationGreaterThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func DurationLesserOrEqualThan

func DurationLesserOrEqualThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func DurationLesserThan

func DurationLesserThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func GreaterOrEqualThan

func GreaterOrEqualThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func GreaterThan

func GreaterThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func IntArrayEquals added in v0.34.0

func IntArrayEquals(a *IntEvaluator, b *IntArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func IntArrayGreaterOrEqualThan added in v0.34.0

func IntArrayGreaterOrEqualThan(a *IntEvaluator, b *IntArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func IntArrayGreaterThan added in v0.34.0

func IntArrayGreaterThan(a *IntEvaluator, b *IntArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func IntArrayLesserOrEqualThan added in v0.34.0

func IntArrayLesserOrEqualThan(a *IntEvaluator, b *IntArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func IntArrayLesserThan added in v0.34.0

func IntArrayLesserThan(a *IntEvaluator, b *IntArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func IntArrayMatches added in v0.34.0

func IntArrayMatches(a *IntArrayEvaluator, b *IntArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

IntArrayMatches weak comparison, a least one element of a should be in b

func IntEquals

func IntEquals(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func LesserOrEqualThan

func LesserOrEqualThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func LesserThan

func LesserThan(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func Not

func Not(a *BoolEvaluator, opts *Opts, state *State) *BoolEvaluator

Not - !true operator

func Or

func Or(a *BoolEvaluator, b *BoolEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

func StringArrayContains added in v0.34.0

func StringArrayContains(a *StringEvaluator, b *StringArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringArrayContains evaluates array of strings against a value

func StringArrayContainsWrapper added in v0.34.0

func StringArrayContainsWrapper(a *StringEvaluator, b *StringArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringArrayContainsWrapper makes use of operator overrides

func StringArrayMatches added in v0.34.0

func StringArrayMatches(a *StringArrayEvaluator, b *StringValuesEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringArrayMatches weak comparison, a least one element of a should be in b. a can't contain regexp

func StringArrayMatchesWrapper added in v0.34.0

func StringArrayMatchesWrapper(a *StringArrayEvaluator, b *StringValuesEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringArrayMatchesWrapper makes use of operator overrides

func StringEquals

func StringEquals(a *StringEvaluator, b *StringEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringEquals evaluates string

func StringEqualsWrapper added in v0.34.0

func StringEqualsWrapper(a *StringEvaluator, b *StringEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringEqualsWrapper makes use of operator overrides

func StringValuesContains added in v0.34.0

func StringValuesContains(a *StringEvaluator, b *StringValuesEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringValuesContains evaluates a string against values

func StringValuesContainsWrapper added in v0.34.0

func StringValuesContainsWrapper(a *StringEvaluator, b *StringValuesEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)

StringValuesContainsWrapper makes use of operator overrides

func (*BoolEvaluator) Eval

func (b *BoolEvaluator) Eval(ctx *Context) interface{}

Eval returns the result of the evaluation

func (*BoolEvaluator) GetField

func (b *BoolEvaluator) GetField() string

GetField returns field name used by this evaluator

func (*BoolEvaluator) IsPartial

func (b *BoolEvaluator) IsPartial() bool

IsPartial returns whether the evaluator is partial

func (*BoolEvaluator) IsScalar

func (b *BoolEvaluator) IsScalar() bool

IsScalar returns whether the evaluator is a scalar

type Context

type Context struct {
	Object unsafe.Pointer

	Registers Registers

	// cache available across all the evaluations
	Cache map[string]unsafe.Pointer
	// contains filtered or unexported fields
}

Context describes the context used during a rule evaluation

func NewContext

func NewContext(obj unsafe.Pointer) *Context

NewContext return a new Context

func (*Context) Now

func (c *Context) Now() time.Time

Now return and cache the `now` timestamp

func (*Context) Reset

func (c *Context) Reset()

Reset the context

func (*Context) SetObject

func (c *Context) SetObject(obj unsafe.Pointer)

SetObject set the given object to the context

type ContextPool

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

ContextPool defines a pool of context

func NewContextPool

func NewContextPool() *ContextPool

NewContextPool returns a new context pool

func (*ContextPool) Get

func (c *ContextPool) Get(obj unsafe.Pointer) *Context

Get returns a context with the given object

func (*ContextPool) Put

func (c *ContextPool) Put(ctx *Context)

Put returns the context to the pool

type ErrAstToEval

type ErrAstToEval struct {
	Pos  lexer.Position
	Text string
}

ErrAstToEval describes an error that occurred during the conversion from the AST to an evaluator

func NewArrayTypeError added in v0.34.0

func NewArrayTypeError(pos lexer.Position, arrayKind reflect.Kind, kind reflect.Kind) *ErrAstToEval

NewArrayTypeError returns a new ErrAstToEval error when an invalid type was used

func NewError

func NewError(pos lexer.Position, text string) *ErrAstToEval

NewError returns a new ErrAstToEval error

func NewOpError

func NewOpError(pos lexer.Position, op string, err error) *ErrAstToEval

NewOpError returns a new ErrAstToEval error when an operator was used in an invalid manner

func NewOpUnknownError

func NewOpUnknownError(pos lexer.Position, op string) *ErrAstToEval

NewOpUnknownError returns a new ErrAstToEval error when an unknown operator was used

func NewRegisterMultipleFields

func NewRegisterMultipleFields(pos lexer.Position, regID RegisterID, err error) *ErrAstToEval

NewRegisterMultipleFields returns a new ErrAstToEval error when a register is used across multiple fields

func NewRegisterNameNotAllowed

func NewRegisterNameNotAllowed(pos lexer.Position, regID RegisterID, err error) *ErrAstToEval

NewRegisterNameNotAllowed returns a new ErrAstToEval error when a register name is not allowed

func NewTypeError

func NewTypeError(pos lexer.Position, kind reflect.Kind) *ErrAstToEval

NewTypeError returns a new ErrAstToEval error when an invalid type was used

func (*ErrAstToEval) Error

func (r *ErrAstToEval) Error() string

type ErrFieldNotFound

type ErrFieldNotFound struct {
	Field string
}

ErrFieldNotFound error when a field is not present in the model

func (ErrFieldNotFound) Error

func (e ErrFieldNotFound) Error() string

type ErrInvalidPattern

type ErrInvalidPattern struct {
	Pattern string
}

ErrInvalidPattern is returned for an invalid regular expression

func (ErrInvalidPattern) Error

func (e ErrInvalidPattern) Error() string

type ErrInvalidRegexp

type ErrInvalidRegexp struct {
	Regexp string
}

ErrInvalidRegexp is returned for an invalid regular expression

func (ErrInvalidRegexp) Error

func (e ErrInvalidRegexp) Error() string

type ErrIteratorNotSupported

type ErrIteratorNotSupported struct {
	Field string
}

ErrIteratorNotSupported error when a field doesn't support iteration

func (ErrIteratorNotSupported) Error

func (e ErrIteratorNotSupported) Error() string

type ErrNonStaticPattern

type ErrNonStaticPattern struct {
	Field Field
}

ErrNonStaticPattern when pattern operator is used on a non static value

func (ErrNonStaticPattern) Error

func (e ErrNonStaticPattern) Error() string

type ErrNotSupported

type ErrNotSupported struct {
	Field string
}

ErrNotSupported returned when something is not supported on a field

func (ErrNotSupported) Error

func (e ErrNotSupported) Error() string

type ErrRuleNotCompiled added in v0.34.0

type ErrRuleNotCompiled struct {
	RuleID string
}

ErrRuleNotCompiled error returned by functions that require to have the rule compiled

func (ErrRuleNotCompiled) Error added in v0.34.0

func (e ErrRuleNotCompiled) Error() string

type ErrRuleParse

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

ErrRuleParse describes a parsing error and its position in the expression

func (*ErrRuleParse) Error

func (e *ErrRuleParse) Error() string

type ErrValueTypeMismatch

type ErrValueTypeMismatch struct {
	Field string
}

ErrValueTypeMismatch error when the given value is not having the correct type

func (ErrValueTypeMismatch) Error

func (e ErrValueTypeMismatch) Error() string

type Evaluator

type Evaluator interface {
	Eval(ctx *Context) interface{}
	IsPartial() bool
	GetField() string
	IsScalar() bool
}

Evaluator is the interface of an evaluator

type Event

type Event interface {
	// GetType returns the Type of the Event
	GetType() EventType
	// GetFieldEventType returns the Event Type for the given Field
	GetFieldEventType(field Field) (EventType, error)
	// SetFieldValue sets the value of the given Field
	SetFieldValue(field Field, value interface{}) error
	// GetFieldValue returns the value of the given Field
	GetFieldValue(field Field) (interface{}, error)
	// GetFieldType returns the Type of the Field
	GetFieldType(field Field) (reflect.Kind, error)
	// GetPointer returns an unsafe.Pointer of this object
	GetPointer() unsafe.Pointer
	// GetTags returns a list of tags
	GetTags() []string
}

Event is an interface that an Event has to implement for the evaluation

type EventType

type EventType = string

EventType is the type of an event

type Field

type Field = string

Field name

type FieldValue

type FieldValue struct {
	Value interface{}
	Type  FieldValueType

	StringMatcher StringMatcher
}

FieldValue describes a field value with its type

func (*FieldValue) Compile added in v0.34.0

func (f *FieldValue) Compile() error

Compile the regular expression or the pattern

type FieldValueType

type FieldValueType int

FieldValueType represents the type of the value of a field

const (
	ScalarValueType   FieldValueType = 1 << 0
	PatternValueType  FieldValueType = 1 << 1
	RegexpValueType   FieldValueType = 1 << 2
	BitmaskValueType  FieldValueType = 1 << 3
	VariableValueType FieldValueType = 1 << 4
)

Field value types

type Glob added in v0.34.0

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

Glob describes file glob object

func NewGlob added in v0.34.0

func NewGlob(pattern string) (*Glob, error)

NewGlob returns a new glob object from the given pattern

func (*Glob) Contains added in v0.34.0

func (g *Glob) Contains(filename string) bool

Contains returns whether the glob pattern matches the beginning of the filename

func (*Glob) Matches added in v0.34.0

func (g *Glob) Matches(filename string) bool

Matches the given filename

type GlobStringMatcher added in v0.34.0

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

GlobStringMatcher defines a glob pattern matcher

func (*GlobStringMatcher) Compile added in v0.34.0

func (g *GlobStringMatcher) Compile(pattern string) error

Compile a simple pattern

func (*GlobStringMatcher) Contains added in v0.34.0

func (g *GlobStringMatcher) Contains(value string) bool

Contains returns whether the pattern contains the value

func (*GlobStringMatcher) Matches added in v0.34.0

func (g *GlobStringMatcher) Matches(value string) bool

Matches returns whether the value matches

type IntArrayEvaluator

type IntArrayEvaluator struct {
	EvalFnc     func(ctx *Context) []int
	Field       Field
	Values      []int
	Weight      int
	OpOverrides *OpOverrides
	// contains filtered or unexported fields
}

IntArrayEvaluator returns an array of int

func (*IntArrayEvaluator) AppendValues added in v0.34.0

func (i *IntArrayEvaluator) AppendValues(values ...int)

AppendValues to the array evaluator

func (*IntArrayEvaluator) Eval

func (i *IntArrayEvaluator) Eval(ctx *Context) interface{}

Eval returns the result of the evaluation

func (*IntArrayEvaluator) GetField

func (i *IntArrayEvaluator) GetField() string

GetField returns field name used by this evaluator

func (*IntArrayEvaluator) IsPartial

func (i *IntArrayEvaluator) IsPartial() bool

IsPartial returns whether the evaluator is partial

func (*IntArrayEvaluator) IsScalar

func (i *IntArrayEvaluator) IsScalar() bool

IsScalar returns whether the evaluator is a scalar

type IntEvaluator

type IntEvaluator struct {
	EvalFnc     func(ctx *Context) int
	Field       Field
	Value       int
	Weight      int
	OpOverrides *OpOverrides
	// contains filtered or unexported fields
}

IntEvaluator returns an int as result of the evaluation

func IntAnd

func IntAnd(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*IntEvaluator, error)

func IntNot

func IntNot(a *IntEvaluator, opts *Opts, state *State) *IntEvaluator

IntNot - ^int operator

func IntOr

func IntOr(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*IntEvaluator, error)

func IntXor

func IntXor(a *IntEvaluator, b *IntEvaluator, opts *Opts, state *State) (*IntEvaluator, error)

func Minus

func Minus(a *IntEvaluator, opts *Opts, state *State) *IntEvaluator

Minus - -int operator

func (*IntEvaluator) Eval

func (i *IntEvaluator) Eval(ctx *Context) interface{}

Eval returns the result of the evaluation

func (*IntEvaluator) GetField

func (i *IntEvaluator) GetField() string

GetField returns field name used by this evaluator

func (*IntEvaluator) IsPartial

func (i *IntEvaluator) IsPartial() bool

IsPartial returns whether the evaluator is partial

func (*IntEvaluator) IsScalar

func (i *IntEvaluator) IsScalar() bool

IsScalar returns whether the evaluator is a scalar

type Iterator

type Iterator interface {
	Front(ctx *Context) unsafe.Pointer
	Next() unsafe.Pointer
}

Iterator interface of a field iterator

type Macro

type Macro struct {
	ID         MacroID
	Expression string
	Opts       *Opts
	// contains filtered or unexported fields
}

Macro - Macro object identified by an `ID` containing a SECL `Expression`

func (*Macro) GenEvaluator

func (m *Macro) GenEvaluator(model Model, opts *Opts) error

GenEvaluator - Compiles and generates the evalutor

func (*Macro) GetAst

func (m *Macro) GetAst() *ast.Macro

GetAst - Returns the representation of the SECL `Expression`

func (*Macro) GetEvaluator

func (m *Macro) GetEvaluator() *MacroEvaluator

GetEvaluator - Returns the MacroEvaluator of the Macro corresponding to the SECL `Expression`

func (*Macro) GetEventTypes

func (m *Macro) GetEventTypes() []EventType

GetEventTypes - Returns a list of all the Event Type that the `Expression` handles

func (*Macro) GetFields

func (m *Macro) GetFields() []Field

GetFields - Returns all the Field that the Macro handles included sub-Macro

func (*Macro) Parse

func (m *Macro) Parse() error

Parse - Transforms the SECL `Expression` into its AST representation

type MacroEvaluator

type MacroEvaluator struct {
	Value       interface{}
	EventTypes  []EventType
	FieldValues map[Field][]FieldValue
}

MacroEvaluator - Evaluation part of a Macro

func (*MacroEvaluator) GetFields

func (m *MacroEvaluator) GetFields() []Field

GetFields - Returns all the Field that the MacroEvaluator handles

type MacroID

type MacroID = string

MacroID - ID of a Macro

type Model

type Model interface {
	// GetEvaluator returns an evaluator for the given field
	GetEvaluator(field Field, regID RegisterID) (Evaluator, error)
	// ValidateField returns whether the value use against the field is valid, ex: for constant
	ValidateField(field Field, value FieldValue) error
	// GetIterator return an iterator
	GetIterator(field Field) (Iterator, error)
	// NewEvent returns a new event instance
	NewEvent() Event
}

Model - interface that a model has to implement for the rule compilation

type OpOverrides added in v0.34.0

type OpOverrides struct {
	StringEquals         func(a *StringEvaluator, b *StringEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)
	StringValuesContains func(a *StringEvaluator, b *StringValuesEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)
	StringArrayContains  func(a *StringEvaluator, b *StringArrayEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)
	StringArrayMatches   func(a *StringArrayEvaluator, b *StringValuesEvaluator, opts *Opts, state *State) (*BoolEvaluator, error)
}

OpOverrides defines operator override functions

type Opts

type Opts struct {
	LegacyFields map[Field]Field
	Constants    map[string]interface{}
	Macros       map[MacroID]*Macro
	Variables    map[string]VariableValue
	UserCtx      interface{}
}

Opts are the options to be passed to the evaluator

func (*Opts) AddMacro added in v0.34.0

func (o *Opts) AddMacro(macro *Macro) *Opts

AddMacro add a macro

func (*Opts) WithConstants added in v0.34.0

func (o *Opts) WithConstants(constants map[string]interface{}) *Opts

WithConstants set constants

func (*Opts) WithLegacyFields added in v0.34.0

func (o *Opts) WithLegacyFields(fields map[Field]Field) *Opts

WithLegacyFields set legacy fields

func (*Opts) WithMacros added in v0.34.0

func (o *Opts) WithMacros(macros map[MacroID]*Macro) *Opts

WithMacros set macros fields

func (*Opts) WithUserContext added in v0.34.0

func (o *Opts) WithUserContext(ctx interface{}) *Opts

WithUserContext set user context

func (*Opts) WithVariables added in v0.34.0

func (o *Opts) WithVariables(variables map[string]VariableValue) *Opts

WithVariables set variables

type RegexpStringMatcher added in v0.34.0

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

RegexpStringMatcher defines a regular expression pattern matcher

func (*RegexpStringMatcher) Compile added in v0.34.0

func (r *RegexpStringMatcher) Compile(pattern string) error

Compile a regular expression based pattern

func (*RegexpStringMatcher) Matches added in v0.34.0

func (r *RegexpStringMatcher) Matches(value string) bool

Matches returns whether the value matches

type Register

type Register struct {
	Value unsafe.Pointer
	// contains filtered or unexported fields
}

Register describes a register that can be used by a set

type RegisterID

type RegisterID = string

RegisterID identify a register ID

type Registers

type Registers map[RegisterID]*Register

Registers defines all available registers

func (Registers) Clone

func (r Registers) Clone() Registers

Clone returns a copy of the registers

type Rule

type Rule struct {
	ID         RuleID
	Expression string
	Tags       []string
	Opts       *Opts
	Model      Model
	// contains filtered or unexported fields
}

Rule - Rule object identified by an `ID` containing a SECL `Expression`

func (*Rule) Eval

func (r *Rule) Eval(ctx *Context) bool

Eval - Evaluates

func (*Rule) GenEvaluator

func (r *Rule) GenEvaluator(model Model, opts *Opts) error

GenEvaluator - Compile and generates the RuleEvaluator

func (*Rule) GenPartials

func (r *Rule) GenPartials() error

GenPartials - Compiles and generates partial Evaluators

func (*Rule) GetAst

func (r *Rule) GetAst() *ast.Rule

GetAst - Returns the representation of the SECL `Expression`

func (*Rule) GetEvaluator

func (r *Rule) GetEvaluator() *RuleEvaluator

GetEvaluator - Returns the RuleEvaluator of the Rule corresponding to the SECL `Expression`

func (*Rule) GetEventTypes

func (r *Rule) GetEventTypes() ([]EventType, error)

GetEventTypes - Returns a list of all the event that the `Expression` handles

func (*Rule) GetFieldValues

func (r *Rule) GetFieldValues(field Field) []FieldValue

GetFieldValues returns the values of the given field

func (*Rule) GetFields

func (r *Rule) GetFields() []Field

GetFields - Returns all the Field of the Rule including field of the Macro used

func (*Rule) GetPartialEval

func (r *Rule) GetPartialEval(field Field) BoolEvalFnc

GetPartialEval - Returns the Partial RuleEvaluator for the given Field

func (*Rule) Parse

func (r *Rule) Parse() error

Parse - Transforms the SECL `Expression` into its AST representation

func (*Rule) PartialEval

func (r *Rule) PartialEval(ctx *Context, field Field) (bool, error)

PartialEval - Partial evaluation with the given Field

type RuleEvaluator

type RuleEvaluator struct {
	Eval        BoolEvalFnc
	EventTypes  []EventType
	FieldValues map[Field][]FieldValue
	// contains filtered or unexported fields
}

RuleEvaluator - Evaluation part of a Rule

func (*RuleEvaluator) GetFields

func (r *RuleEvaluator) GetFields() []Field

GetFields - Returns all the Field that the RuleEvaluator handles

func (*RuleEvaluator) PartialEval

func (r *RuleEvaluator) PartialEval(ctx *Context, field Field) (bool, error)

PartialEval partially evaluation of the Rule with the given Field.

type RuleID

type RuleID = string

RuleID - ID of a Rule

type State added in v0.34.0

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

State defines the current state of the rule compilation

func (*State) UpdateFieldValues added in v0.34.0

func (s *State) UpdateFieldValues(field Field, value FieldValue) error

UpdateFieldValues updates the field values

func (*State) UpdateFields added in v0.34.0

func (s *State) UpdateFields(field Field)

UpdateFields updates the fields used in the rule

type StringArrayEvaluator

type StringArrayEvaluator struct {
	EvalFnc     func(ctx *Context) []string
	Values      []string
	Field       Field
	Weight      int
	OpOverrides *OpOverrides
	// contains filtered or unexported fields
}

StringArrayEvaluator returns an array of strings

func (*StringArrayEvaluator) AppendValue added in v0.34.0

func (s *StringArrayEvaluator) AppendValue(value string)

AppendValue append the given value

func (*StringArrayEvaluator) Eval

func (s *StringArrayEvaluator) Eval(ctx *Context) interface{}

Eval returns the result of the evaluation

func (*StringArrayEvaluator) GetField

func (s *StringArrayEvaluator) GetField() string

GetField returns field name used by this evaluator

func (*StringArrayEvaluator) IsPartial

func (s *StringArrayEvaluator) IsPartial() bool

IsPartial returns whether the evaluator is partial

func (*StringArrayEvaluator) IsScalar

func (s *StringArrayEvaluator) IsScalar() bool

IsScalar returns whether the evaluator is a scalar

type StringEvaluator

type StringEvaluator struct {
	EvalFnc     func(ctx *Context) string
	Field       Field
	Value       string
	Weight      int
	OpOverrides *OpOverrides
	ValueType   FieldValueType
	// contains filtered or unexported fields
}

StringEvaluator returns a string as result of the evaluation

func (*StringEvaluator) Compile added in v0.34.0

func (s *StringEvaluator) Compile() error

Compile compile internal object

func (*StringEvaluator) Eval

func (s *StringEvaluator) Eval(ctx *Context) interface{}

Eval returns the result of the evaluation

func (*StringEvaluator) GetField

func (s *StringEvaluator) GetField() string

GetField returns field name used by this evaluator

func (*StringEvaluator) GetValue added in v0.34.0

func (s *StringEvaluator) GetValue(ctx *Context) string

GetValue returns the evaluator value

func (*StringEvaluator) IsPartial

func (s *StringEvaluator) IsPartial() bool

IsPartial returns whether the evaluator is partial

func (*StringEvaluator) IsScalar

func (s *StringEvaluator) IsScalar() bool

IsScalar returns whether the evaluator is a scalar

type StringMatcher added in v0.34.0

type StringMatcher interface {
	Compile(pattern string) error
	Matches(value string) bool
}

StringMatcher defines a pattern matcher

func NewStringMatcher added in v0.34.0

func NewStringMatcher(kind FieldValueType, pattern string) (StringMatcher, error)

NewStringMatcher returns a new string matcher

type StringValues added in v0.34.0

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

StringValues describes a set of string values, either regex or scalar

func (*StringValues) AppendFieldValue added in v0.34.0

func (s *StringValues) AppendFieldValue(value FieldValue) error

AppendFieldValue append a FieldValue

func (*StringValues) AppendScalarValue added in v0.34.0

func (s *StringValues) AppendScalarValue(value string)

AppendScalarValue append a scalar string value

func (*StringValues) AppendStringEvaluator added in v0.34.0

func (s *StringValues) AppendStringEvaluator(evaluator *StringEvaluator) error

AppendStringEvaluator append a string evalutator

func (*StringValues) GetScalarValues added in v0.34.0

func (s *StringValues) GetScalarValues() []string

GetScalarValues return the scalar values

func (*StringValues) GetStringMatchers added in v0.34.0

func (s *StringValues) GetStringMatchers() []StringMatcher

GetStringMatchers return the pattern matchers

func (*StringValues) Matches added in v0.34.0

func (s *StringValues) Matches(value string) bool

Matches returns whether the value matches the string values

func (*StringValues) SetFieldValues added in v0.34.0

func (s *StringValues) SetFieldValues(values ...FieldValue) error

SetFieldValues apply field values

type StringValuesEvaluator added in v0.34.0

type StringValuesEvaluator struct {
	EvalFnc func(ctx *Context) *StringValues
	Values  StringValues
	Weight  int
	// contains filtered or unexported fields
}

StringValuesEvaluator returns an array of strings

func (*StringValuesEvaluator) AppendFieldValues added in v0.34.0

func (s *StringValuesEvaluator) AppendFieldValues(values ...FieldValue) error

AppendFieldValues append field values

func (*StringValuesEvaluator) AppendMembers added in v0.34.0

func (s *StringValuesEvaluator) AppendMembers(members ...ast.StringMember) error

AppendMembers add members to the evaluator

func (*StringValuesEvaluator) Eval added in v0.34.0

func (s *StringValuesEvaluator) Eval(ctx *Context) interface{}

Eval returns the result of the evaluation

func (*StringValuesEvaluator) GetField added in v0.34.0

func (s *StringValuesEvaluator) GetField() string

GetField returns field name used by this evaluator

func (*StringValuesEvaluator) IsPartial added in v0.34.0

func (s *StringValuesEvaluator) IsPartial() bool

IsPartial returns whether the evaluator is partial

func (*StringValuesEvaluator) IsScalar added in v0.34.0

func (s *StringValuesEvaluator) IsScalar() bool

IsScalar returns whether the evaluator is a scalar

func (*StringValuesEvaluator) SetFieldValues added in v0.34.0

func (s *StringValuesEvaluator) SetFieldValues(values ...FieldValue) error

SetFieldValues apply field values

type VariableValue

type VariableValue struct {
	IntFnc    func(ctx *Context) int
	StringFnc func(ctx *Context) string
}

VariableValue describes secl variable

Jump to

Keyboard shortcuts

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