Version: v0.25.0 Latest Latest

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

Go to latest
Published: Sep 23, 2018 License: Apache-2.0 Imports: 8 Imported by: 0



Package query provides a parser for a custom query format:

abci.invoice.number=22 AND abci.invoice.owner=Ivan

See query.peg for the grammar, which is a https://en.wikipedia.org/wiki/Parsing_expression_grammar. More: https://github.com/PhilippeSigaud/Pegged/wiki/PEG-Basics

It has a support for numbers (integer and floating point), dates and times.




View Source
const (
	// DateLayout defines a layout for all dates (`DATE date`)
	DateLayout = "2006-01-02"
	// TimeLayout defines a layout for all times (`TIME time`)
	TimeLayout = time.RFC3339


This section is empty.


This section is empty.


type Condition

type Condition struct {
	Tag     string
	Op      Operator
	Operand interface{}

Condition represents a single condition within a query and consists of tag (e.g. "tx.gas"), operator (e.g. "=") and operand (e.g. "7").

type Empty

type Empty struct {

Empty query matches any set of tags.

func (Empty) Matches

func (Empty) Matches(tags pubsub.TagMap) bool

Matches always returns true.

func (Empty) String

func (Empty) String() string

type Operator

type Operator uint8

Operator is an operator that defines some kind of relation between tag and operand (equality, etc.).

const (
	// "<="
	OpLessEqual Operator = iota
	// ">="
	// "<"
	// ">"
	// "="
	// "CONTAINS"; used to check if a string contains a certain sub string.

type Query

type Query struct {
	// contains filtered or unexported fields

Query holds the query string and the query parser.

func MustParse

func MustParse(s string) *Query

MustParse turns the given string into a query or panics; for tests or others cases where you know the string is valid.

func New

func New(s string) (*Query, error)

New parses the given string and returns a query or error if the string is invalid.

func (*Query) Conditions

func (q *Query) Conditions() []Condition

Conditions returns a list of conditions.

func (*Query) Matches

func (q *Query) Matches(tags pubsub.TagMap) bool

Matches returns true if the query matches the given set of tags, false otherwise.

For example, query "name=John" matches tags = {"name": "John"}. More examples could be found in parser_test.go and query_test.go.

func (*Query) String

func (q *Query) String() string

String returns the original string.

type QueryParser

type QueryParser struct {
	Buffer string

	Pretty bool
	// contains filtered or unexported fields

func (*QueryParser) AST

func (t *QueryParser) AST() *node32

func (*QueryParser) Add

func (t *QueryParser) Add(rule pegRule, begin, end, index uint32)

func (*QueryParser) Init

func (p *QueryParser) Init()

func (*QueryParser) Parse

func (p *QueryParser) Parse(rule ...int) error

func (*QueryParser) PrettyPrintSyntaxTree

func (t *QueryParser) PrettyPrintSyntaxTree(buffer string)

func (*QueryParser) Print

func (t *QueryParser) Print()

func (*QueryParser) PrintSyntaxTree

func (p *QueryParser) PrintSyntaxTree()

func (*QueryParser) Reset

func (p *QueryParser) Reset()

func (*QueryParser) Tokens

func (t *QueryParser) Tokens() []token32

func (*QueryParser) Trim

func (t *QueryParser) Trim(length uint32)


Path Synopsis

Jump to

Keyboard shortcuts

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