asciidoc-parser 0.15.2

Parser for AsciiDoc format
Documentation
use crate::tests::fixtures::parser::SourceLine;

#[derive(Debug, Eq, PartialEq)]
pub(crate) struct SourceMap(pub &'static [(usize, SourceLine)]);

impl PartialEq<crate::parser::SourceMap> for SourceMap {
    fn eq(&self, other: &crate::parser::SourceMap) -> bool {
        fixture_eq_observed(self, other)
    }
}

impl PartialEq<SourceMap> for crate::parser::SourceMap {
    fn eq(&self, other: &SourceMap) -> bool {
        fixture_eq_observed(other, self)
    }
}

fn fixture_eq_observed(fixture: &SourceMap, observed: &crate::parser::SourceMap) -> bool {
    if fixture.0.len() != observed.0.len() {
        return false;
    }

    for (fixture_source_line, observed_source_line) in fixture.0.iter().zip(&observed.0) {
        if fixture_source_line.0 != observed_source_line.0
            || fixture_source_line.1 != observed_source_line.1
        {
            return false;
        }
    }

    true
}