6 releases
0.2.3 | Nov 11, 2024 |
---|---|
0.2.2 | Nov 11, 2024 |
0.2.1 | Sep 22, 2024 |
0.1.1 | Jul 20, 2023 |
#272 in Testing
4,226 downloads per month
125KB
3K
SLoC
An implementation of RCP 19 (RETS Validation Expressions) from the RESO Transport group.
See the docs for usage.
This repo tests against the compliance tests at https://github.com/zenlist/reso-rcp19-compliance-tests
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
~4–10MB
~96K SLoC