[][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.