You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rules engine written in golang with the help of antlr.
This package will be very helpful in situations where you have a generic rule and want to verify if your values (specified using map[string]interface{}) satisfy the rule.
All the operations can be written capitalized or lowercase (ex: eq or EQ can be used)
Logical Operations supported are andor
Compare Expression and their definitions
expression
meaning
eq
equals to
==
equals to
ne
not equal to
!=
not equal to
lt
less than
<
less than
gt
greater than
>
greater than
le
less than or equal to
<=
less than or equal to
ge
greater than or equal to
>=
greater than or equal to
co
contains
sw
starts with
ew
ends with
in
in a list
pr
present, will be true if you have a key as true
not
not of a logical expression
How to use it
Use your dependency manager to import github.com/nikunjy/rules/parser. This will let you parse a rule and keep the parsed representation around.
Alternatively, you can also use github.com/nikunjy/rules directly to call the root Evaluate(string, map[string]interface{}) method.
I would recommend importing github.com/nikunjy/rules/parser
How to extend the grammar
Please look at this antlr tutorial, the link will show you how to setup antlr.
The article has a whole lot of detail about antlr I encourage you to read it, you might also like my blog post about this repo.
After taking a look at the antlr tutorial, you can extend the JsonQuery.g4 file.
Compile the parser antlr4 -Dlanguage=Go -visitor -no-listener JsonQuery.g4 -o ./ (Note: -o is the output directory, make sure all the stuff it generates is in the parser directory of the root repo folder)