rulemorph 0.3.3

YAML-based declarative data transformation engine for CSV/JSON to JSON
Documentation
#[test]
fn test_v2_context_ref_transform() {
    let yaml = r#"
version: 2
input:
  format: json
mappings:
  - target: rate
    expr:
      - "@context.rate"
"#;
    let rule = parse_rule_file(yaml).unwrap();
    let input = r#"[{"id": 1}]"#;
    let context = serde_json::json!({"rate": 1.5});
    let result = transform(&rule, input, Some(&context)).unwrap();
    assert_eq!(result, serde_json::json!([{"rate": 1.5}]));
}

#[test]
fn test_v2_out_ref_transform() {
    let yaml = r#"
version: 2
input:
  format: json
mappings:
  - target: first_name
    expr:
      - "@input.name"
  - target: greeting
    expr:
      - "Hello, "
      - concat: ["@out.first_name"]
"#;
    let rule = parse_rule_file(yaml).unwrap();
    let input = r#"[{"name": "Bob"}]"#;
    let result = transform(&rule, input, None).unwrap();
    assert_eq!(
        result,
        serde_json::json!([{"first_name": "Bob", "greeting": "Hello, Bob"}])
    );
}