10 releases
new 0.3.0 | Nov 7, 2024 |
---|---|
0.2.2 | Aug 25, 2022 |
0.2.1 | Apr 26, 2022 |
0.1.7 | Oct 16, 2020 |
0.1.6 | Aug 17, 2020 |
#262 in Encoding
3,864 downloads per month
185KB
4.5K
SLoC
A JEXL evaluator written in Rust This crate depends on a JEXL parser crate that handles all the parsing and is a part of the same workspace. JEXL is an expression language used by Mozilla, you can find more information here: https://github.com/mozilla/mozjexl
How to use
The access point for this crate is the eval
functions of the Evaluator Struct
You can use the eval
function directly to evaluate standalone statements
For example:
use jexl_eval::Evaluator;
use serde_json::json as value;
let evaluator = Evaluator::new();
assert_eq!(evaluator.eval("'Hello ' + 'World'").unwrap(), value!("Hello World"));
You can also run the statements against a context using the eval_in_context
function
The context can be any type that implements the serde::Serializable
trait
and the function will return errors if the statement doesn't match the context
For example:
use jexl_eval::Evaluator;
use serde_json::json as value;
let context = value!({"a": {"b": 2.0}});
let evaluator = Evaluator::new();
assert_eq!(evaluator.eval_in_context("a.b", context).unwrap(), value!(2.0));
Dependencies
~3–5MB
~92K SLoC