yaml_parser 0.2.1

Semi-tolerant YAML concrete syntax tree parser.
Documentation
use super::{Input, State};
use winnow::{
    combinator::trace,
    error::{ErrMode, ErrorKind, ParserError},
    Parser,
};

pub(super) fn verify_state<'s, E, F>(mut predicate: F) -> impl Parser<Input<'s>, (), E>
where
    E: ParserError<Input<'s>>,
    F: FnMut(&State) -> bool,
{
    trace("verify_state", move |input: &mut Input<'s>| {
        if predicate(&input.state) {
            Ok(())
        } else {
            Err(ErrMode::Backtrack(E::from_error_kind(
                input,
                ErrorKind::Verify,
            )))
        }
    })
}