Update plain list item tag parser to allow double colon as long as its not the last one on that line.
This commit is contained in:
parent
1f11bfa2ec
commit
1561e1e580
@ -1,5 +1,6 @@
|
|||||||
use nom::branch::alt;
|
use nom::branch::alt;
|
||||||
use nom::bytes::complete::tag;
|
use nom::bytes::complete::tag;
|
||||||
|
use nom::character::complete::anychar;
|
||||||
use nom::character::complete::digit1;
|
use nom::character::complete::digit1;
|
||||||
use nom::character::complete::line_ending;
|
use nom::character::complete::line_ending;
|
||||||
use nom::character::complete::one_of;
|
use nom::character::complete::one_of;
|
||||||
@ -314,7 +315,7 @@ fn item_tag<'b, 'g, 'r, 's>(
|
|||||||
),
|
),
|
||||||
|(children, _exit_contents)| !children.is_empty(),
|
|(children, _exit_contents)| !children.is_empty(),
|
||||||
)(input)?;
|
)(input)?;
|
||||||
let (remaining, _) = tuple((one_of(" \t"), tag("::")))(remaining)?;
|
let (remaining, _) = item_tag_divider(remaining)?;
|
||||||
Ok((remaining, children))
|
Ok((remaining, children))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -325,14 +326,22 @@ fn item_tag_end<'b, 'g, 'r, 's>(
|
|||||||
) -> Res<OrgSource<'s>, OrgSource<'s>> {
|
) -> Res<OrgSource<'s>, OrgSource<'s>> {
|
||||||
alt((
|
alt((
|
||||||
recognize(tuple((
|
recognize(tuple((
|
||||||
one_of(" \t"),
|
item_tag_divider,
|
||||||
tag("::"),
|
opt(tuple((
|
||||||
alt((recognize(one_of(" \t")), line_ending, eof)),
|
peek(one_of(" \t")),
|
||||||
|
many_till(anychar, peek(alt((item_tag_divider, line_ending, eof)))),
|
||||||
|
))),
|
||||||
|
alt((line_ending, eof)),
|
||||||
))),
|
))),
|
||||||
line_ending,
|
line_ending,
|
||||||
))(input)
|
))(input)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
|
||||||
|
fn item_tag_divider<'s>(input: OrgSource<'s>) -> Res<OrgSource<'s>, OrgSource<'s>> {
|
||||||
|
recognize(tuple((one_of(" \t"), tag("::"))))(input)
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
|
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
|
||||||
fn item_tag_post_gap<'b, 'g, 'r, 's>(
|
fn item_tag_post_gap<'b, 'g, 'r, 's>(
|
||||||
context: RefContext<'b, 'g, 'r, 's>,
|
context: RefContext<'b, 'g, 'r, 's>,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user