use tramlines_core::frontmatter::{Event, check as check_core};
use super::{At, Checker, Gate};
pub(super) fn check(c: &mut Checker<'_>) {
let events = check_core(c.doc.frontmatter, &c.schema.core, c.states, c.host);
for event in events {
match event {
Event::Rule {
rule,
key,
line,
criterion,
message,
} => {
let at = At {
named: Some(format!("key `{key}`")),
..At::default()
};
c.located(at, |c| c.emit(&rule, line, criterion, message));
}
Event::Error {
line,
criterion,
message,
} => c.error(line, criterion, message),
Event::Gate { only, line, rule } => c.out.gates.push(Gate { line, only, rule }),
}
}
}