[−][src]Function parse_hyperlinks::take_until_unbalanced
pub fn take_until_unbalanced(
opening_bracket: char,
closing_bracket: char
) -> impl Fn(&str) -> IResult<&str, &str>
A parser similar to nom::bytes::complete::take_until()
, but that does not
stop at balanced opening and closing tags. It is designed to work inside the
nom::sequence::delimited()
parser.
Basic usage
use nom::bytes::complete::tag; use nom::sequence::delimited; use parse_hyperlinks::take_until_unbalanced; let mut parser = delimited(tag("<"), take_until_unbalanced('<', '>'), tag(">")); assert_eq!(parser("<<inside>inside>abc"), Ok(("abc", "<inside>inside")));
It skips nested brackets until it finds an extra unbalanced closing bracket. Escaped brackets
like \<
and \>
are not considered as brackets and are not counted. This function is
very similar to nom::bytes::complete::take_until(">")
, except it also takes nested brackets.