2.0.15 • Published 5 months ago

selectively v2.0.15

Weekly downloads
197
License
MIT
Repository
github
Last release
5 months ago

selectively

Create selection by filtering a collection.

Selectively Grammar

Symbols

  • 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)

Production Rules

Boolean Rules:

  • bool-expr -> prop ":" expr | prop expr-op expr | (bool-expr) | bool-expr "|" bool-expr | bool-expr bool-expr | !bool-expr
  • prop -> prop "." id | id
  • expr -> prop | string | alg-expr | (expr) | "!"expr | expr "|" expr
  • expr-op -> < | > | <= | >=

Algebraic Rules:

  • alg-expr -> number | alg-expr bin-op alg-expr | (alg-expr)
  • bin-op -> + | - | / | *

Merchant Rules

All id could be id.id.id...

Allowed Strings

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

Disallowed Strings

Open brackets:

(((id>num))

Mix of prop ":" expr and prop expr-op expr

id:(id>num)   

Special Rules

prop expr-op expr

Left-hand side:

Can be ambiguous, e.g. amount, where amount is an identifier which can be found as a property on several properties.

Right-hand side:

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. 

What is What?

  • 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.
2.0.15

5 months ago

2.0.13

10 months ago

2.0.12

11 months ago

2.0.11

1 year ago

2.0.10

1 year ago

2.0.7

2 years ago

2.0.9

2 years ago

2.0.8

2 years ago

2.0.5

2 years ago

2.0.6

2 years ago

2.0.3

2 years ago

2.0.4

2 years ago

2.0.2

3 years ago

2.0.1

3 years ago

0.0.70

3 years ago

0.0.69

3 years ago

0.0.67

4 years ago

0.0.68

4 years ago

0.0.66

4 years ago

0.0.65

4 years ago

0.0.64

4 years ago

0.0.63

4 years ago

0.0.62

4 years ago

0.0.61

4 years ago

0.0.60

4 years ago

0.0.59

4 years ago

0.0.51

4 years ago

0.0.52

4 years ago

0.0.53

4 years ago

0.0.54

4 years ago

0.0.55

4 years ago

0.0.56

4 years ago

0.0.57

4 years ago

0.0.58

4 years ago

0.0.50

4 years ago

0.0.48

4 years ago

0.0.49

4 years ago

0.0.46

4 years ago

0.0.47

4 years ago

0.0.44

4 years ago

0.0.45

4 years ago

0.0.43

4 years ago

0.0.40

4 years ago

0.0.41

4 years ago

0.0.42

4 years ago

0.0.39

4 years ago

0.0.38

4 years ago

0.0.37

4 years ago

0.0.36

4 years ago

0.0.35

4 years ago

0.0.34

4 years ago

0.0.33

4 years ago

0.0.30

4 years ago

0.0.31

4 years ago

0.0.32

4 years ago

0.0.29

4 years ago

0.0.28

4 years ago

0.0.27

4 years ago

0.0.26

4 years ago

0.0.25

4 years ago

0.0.23

4 years ago

0.0.24

4 years ago

0.0.22

4 years ago

0.0.21

4 years ago

0.0.20

5 years ago

0.0.19

5 years ago

0.0.18

5 years ago

0.0.17

6 years ago

0.0.13

6 years ago

0.0.14

6 years ago

0.0.15

6 years ago

0.0.16

6 years ago

0.0.12

6 years ago

0.0.11

6 years ago

0.0.10

6 years ago

0.0.9

6 years ago

0.0.8

6 years ago

0.0.7

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago