pub fn tag<T, I, E>(tag: T) -> impl Clone + Fn(I) -> IResult<I, I, E> where
T: InputLength + Clone,
I: InputTake + Compare<T>,
E: TagError<I, T>,
Expand description
Parser recognizing a fixed pattern, called a tag. If the front of the
input data matches the tag
, that part of the input will be returned.
Records the tag in the error in the event of a parse failure via
TagError
.
Example
use cool_asserts::assert_matches;
use nom_supreme::tag::complete::tag;
use nom_supreme::error::{ErrorTree, BaseErrorKind, Expectation};
fn parse_hello(s: &str) -> IResult<&str, &str, ErrorTree<&str>> {
tag("hello")(s)
}
assert_matches!(
parse_hello("hello, world!"),
Ok((", world!", "hello")),
);
assert_matches!(
parse_hello("something"),
Err(Err::Error(ErrorTree::Base {
location: "something",
kind: BaseErrorKind::Expected(Expectation::Tag("hello")),
}))
);
assert_matches!(
parse_hello("hel"),
Err(Err::Error(ErrorTree::Base {
location: "hel",
kind: BaseErrorKind::Expected(Expectation::Tag("hello")),
}))
);