2 releases
0.1.1 | Jul 20, 2023 |
---|---|
0.1.0 | Jul 14, 2023 |
#895 in Encoding
3,588 downloads per month
110KB
2.5K
SLoC
An implementation of RCP 19 (RETS Validation Expressions) from the RESO Transport group.
See the docs for usage.
See the compliance tests in the compliance-tests
folder.
lib.rs
:
An implementation of RCP 19 (RETS Validation Expressions) from the RESO Transport group.
Example
use rets_expression::{Expression, Engine, EvaluateContext};
use serde_json::json;
// Parse an expression
let expression = "MlsStatus .IN. ('Active', 'Pending') .AND. (ListPrice >= 1 .OR. LAST MlsStatus = 'Incomplete')"
.parse::<Expression>()
.unwrap();
// Create the property data to run the expression against
let value = json!({
"MlsStatus": "Active",
"ListPrice": 1000000
});
// Create the previous property data to run the expression against (for when the expression
// includes references to previous data, like `LAST FieldName`)
let previous_value = json!({
"MlsStatus": "Incomplete",
"ListPrice": 0
});
// Create a default engine and a context in which to evaluate the expression
let engine = Engine::default();
let context = EvaluateContext::new(&engine, &value).with_previous(&previous_value);
// Evaluate the expression!
let value = expression.apply(context).unwrap();
assert_eq!(value.into_owned(), json!(true));
Dependencies
~2.2–9.5MB
~60K SLoC