Add paragraph parser.

This commit is contained in:
Tom Alexander
2022-10-15 14:16:52 -04:00
parent ba25f5b5ca
commit 9d534aa627
4 changed files with 19 additions and 13 deletions

View File

@@ -21,10 +21,7 @@ use nom::multi::many_till;
use nom::sequence::tuple;
use nom::IResult;
fn flat_text_element<'s, 'r>(
i: &'s str,
context: &'r mut NomContext,
) -> Res<&'s str, TextElement<'s>> {
fn flat_text_element<'s, 'r>(i: &'s str, context: &'r NomContext) -> Res<&'s str, TextElement<'s>> {
context.not_matching_fail(i)?;
alt((
@@ -36,3 +33,11 @@ fn flat_text_element<'s, 'r>(
map(line_break, TextElement::LineBreak),
))(i)
}
pub fn paragraph<'s, 'r>(
i: &'s str,
context: &'r NomContext,
) -> Res<&'s str, (Vec<TextElement<'s>>, &'s str)> {
let text_element_parser = parser_with_context!(flat_text_element)(context);
many_till(text_element_parser, paragraph_end)(i)
}