Expr is an engine that can evaluate expressions.
The purpose of the package is to allow users to use expressions inside configuration for more complex logic. It is a perfect candidate for the foundation of a business rule engine. The idea is to let configure things in a dynamic way without recompile of a program:
# Get the special price if
user.Group in ["good_customers", "collaborator"]
# Promote article to the homepage when
len(article.Comments) > 100 and article.Category not in ["misc"]
# Send an alert when
product.Stock < 15
Inspired by
- Symfony's The ExpressionLanguage component,
- Rob Pike's talk Lexical Scanning in Go.
- Works with any valid Go object (structs, maps, etc)
- Strict mode with type checks
- User-friendly error messages
unclosed "(" (boo + bar] ----------^
- Reasonable set of basic operators
- Fast (faster otto and goja, see bench)
go get -u github.com/antonmedv/expr
- See godoc.org/github.com/antonmedv/expr for developer documentation,
- See The Expression Syntax page to learn the syntax of the Expr expressions.
MIT