rulemorph 0.3.2

YAML-based declarative data transformation engine for CSV/JSON to JSON
Documentation
use super::*;

mod chain;
mod ref_resolution;
mod when;

pub(super) use chain::eval_chain;
pub(super) use ref_resolution::{canonical_ref_path, eval_ref, resolve_source};
pub(super) use when::{
    eval_record_when, eval_record_when_traced, eval_when, eval_when_expr_traced_with_v2_context,
    eval_when_expr_with_v2_context, eval_when_traced,
};

pub(super) fn eval_expr(
    expr: &Expr,
    record: &JsonValue,
    context: Option<&JsonValue>,
    out: &JsonValue,
    base_path: &str,
    locals: Option<&EvalLocals<'_>>,
) -> Result<EvalValue, TransformError> {
    match expr {
        Expr::Literal(value) => Ok(EvalValue::Value(value.clone())),
        Expr::Ref(expr_ref) => eval_ref(expr_ref, record, context, out, base_path, locals),
        Expr::Op(expr_op) => eval_op(expr_op, record, context, out, base_path, None, locals),
        Expr::Chain(expr_chain) => eval_chain(expr_chain, record, context, out, base_path, locals),
    }
}