Create selection by filtering a collection.
- bool-expr (boolean expression)
- prop (property, identifier (id) or combination of identifiers, e.g. identifier.identifier (id.id))
- id (identifier)
- expr (expression)
- expr-op (expression operator e.g. >, <, >=, <=)
- alg-expr (algebraic expression)
- bin-op (binary operator)
- bool-expr -> prop ":" expr | propexpr-opexpr | (bool-expr) | bool-expr "|" bool-expr | bool-exprbool-expr | !bool-expr
- prop -> prop "." id | id
- expr -> prop | string | alg-expr | (expr) | "!"expr | expr "|" expr
- expr-op -> < | > | <= | >=
- alg-expr -> number | alg-exprbin-opalg-expr | (alg-expr)
- bin-op -> + | - | / | *
All id could be id.id.id...
id>num id<=str !(id:str) id:(str | str) id:((str | str) | str) (id<num) id:num id:!num id:!(num | num) id:(num | !num) id:id id>id (((id>num))) (id>(num)) id.id:(id.id | str | num) | id.id.id:id.id id>num + num id<= num + (num * num) / num - num
Open brackets:
(((id>num))
Mix of prop ":" expr and propexpr-opexpr
id:(id>num) Can be ambiguous, e.g. amount, where amount is an identifier which can be found as a property on several properties.
Can't be ambiguous, it must refer to a string, number or a unique identifier, e.g. "uniqueIdentifier.amount". An ambiguous identifier will be interpreted as a string. - 3.14 => number
- identifier | identifier.identifier => property or properties
- unique_identifier.identifier => property
- .identifier => property if the identifier is a property of the base object, otherwise string.
- 1.B2 => string
- card.3d.secure => property
- 20-12-24 => string
- 20 - 12 - 24 => algebraic expression (uses whitespaces around the operators.)
- "20 - 12 - 24" => string. ("" forces an)
- Violation of the rules gives red underlining.