filter

package
v0.0.0-...-58c0a64 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrUnpopulatedBasicExpression ...
	ErrUnpopulatedBasicExpression = errors.New("filter: unpopulated BasicExpression")

	// ErrUnpopulatedTerm ...
	ErrUnpopulatedTerm = errors.New("filter: unpopulated Term")
)
View Source
var Parser = participle.MustBuild(
	&Condition{},
	defaultParserOptions...,
)

Parser will be used to parse Filter Expression into defined Go Structs.

Functions

This section is empty.

Types

type AsFilter

type AsFilter interface {
	AsFilter(Writer) error
}

AsFilter interface that will be implemented by filter structs with logic of stringifying them to filter expression

type Condition

type Condition struct {
	Term *term   `parser:"@@" json:"term,omitempty"`
	And  []*term `parser:"( (\"AND\" @@ )+" json:"and,omitempty"`
	Or   []*term `parser:"| (\"OR\" @@)+ )?" json:"or,omitempty"`
}

Condition contains term or multiple terms with 'AND' or 'OR' logical operator

func (*Condition) AsFilter

func (e *Condition) AsFilter(w Writer) (err error)

AsFilter implementation for Condition

func (*Condition) Evaluate

func (e *Condition) Evaluate(attrs map[string]string) (result bool, err error)

Evaluate implementation for Condition

type Evaluator

type Evaluator interface {
	Evaluate(attrs map[string]string) (bool, error)
}

Evaluator interface which all grammar components should implement

type Writer

type Writer interface {
	WriteString(string) (int, error)
	WriteRune(rune) (int, error)
}

Writer is a subset of strings.Builder

Jump to

Keyboard shortcuts

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