rulemorph 0.3.3

YAML-based declarative data transformation engine for CSV/JSON to JSON
Documentation
use serde_json::Value as JsonValue;

use crate::error::TransformError;
use crate::model::RuleFile;
use crate::normalization::{
    InputData, NormalizationOptions, NormalizedRecords, normalize_records_with_options,
};

pub(super) fn input_records_iter_with_options<'a>(
    rule: &RuleFile,
    input: InputData<'a>,
    options: &NormalizationOptions,
) -> Result<InputRecordsIter<'a>, TransformError> {
    Ok(InputRecordsIter::Normalized(
        normalize_records_with_options(rule, input, options)?,
    ))
}

pub(super) enum InputRecordsIter<'a> {
    Normalized(NormalizedRecords<'a>),
}

impl Iterator for InputRecordsIter<'_> {
    type Item = Result<JsonValue, TransformError>;

    fn next(&mut self) -> Option<Self::Item> {
        match self {
            InputRecordsIter::Normalized(iter) => iter.next(),
        }
    }
}