A simple query language.
crystal-query
has not reached version 1.0.0
; the interface and functionality may change at any time, and the documentation is incomplete.
crystal-query
parses queries composed of lists of terms and logical operators (not
, and
, and or
). A query conceptually defineds a predicate function over a set of objects.
A term consists of a field name, an operator, and a value.
A field name can be any word except the keywords not
, and
, and or
.
The operators are :
, >
, >=
, =
, <=
, and <
.
A value can be any word except a keyword, or any string in double quotes ("a string"
). Within a string, \
escapes the following character ("a double quote: \" and a backslash: \\"
).
Components of a term can be omitted.
Some valid fields: foo:bar
, foo:"bar"
, foo>3
, ="bar"
, foo
, 3
, "foo bar"
.
Terms can be modified and combined with not
, and
, and or
. Expressions can be grouped with ()
.
foo>3 and not (foo<10 or bar:baz)
Terms can also be listed, which is equivalent to combining them with and
.
"lorem" "ipsum"
=> "lorem" and "ipsum"
.