rulemorph 0.3.4

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

pub(in crate::transform) fn has_duplicate_path(
    paths: &[Vec<PathToken>],
    tokens: &[PathToken],
) -> bool {
    paths.iter().any(|existing| existing == tokens)
}

pub(in crate::transform) fn has_path_conflict(
    paths: &[Vec<PathToken>],
    tokens: &[PathToken],
) -> bool {
    paths
        .iter()
        .any(|existing| is_path_prefix(existing, tokens) || is_path_prefix(tokens, existing))
}

fn is_path_prefix(prefix: &[PathToken], tokens: &[PathToken]) -> bool {
    if prefix.len() > tokens.len() {
        return false;
    }
    prefix.iter().zip(tokens).all(|(left, right)| left == right)
}