From 9dfca22b86224038efcf92856156063118c181f8 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 11 Dec 2022 00:36:59 -0500 Subject: [PATCH] Switch to a contextual bold start function. --- src/parser/text_element_parser.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/parser/text_element_parser.rs b/src/parser/text_element_parser.rs index 01dff64d..b4404a5e 100644 --- a/src/parser/text_element_parser.rs +++ b/src/parser/text_element_parser.rs @@ -118,6 +118,13 @@ pub fn context_paragraph_end<'s, 'r>( paragraph_end(input) } +pub fn context_bold_start<'s, 'r>( + context: Context<'r, 's>, + input: &'s str, +) -> Res<&'s str, &'s str> { + recognize(bold_start)(input) +} + pub fn context_bold_end<'s, 'r>(context: Context<'r, 's>, input: &'s str) -> Res<&'s str, &'s str> { recognize(bold_end)(input) } @@ -170,14 +177,14 @@ fn recognize_bold_end(input: &str) -> Res<&str, &str> { } fn flat_bold<'s, 'r>(context: Context<'r, 's>, i: &'s str) -> Res<&'s str, Bold<'s>> { + let bold_start = parser_with_context!(context_bold_start)(context.clone()); let nom_context = context.with_additional_node(ContextElement::FailMatcherNode(FailMatcherNode { fail_matcher: ChainBehavior::AndParent(Some(&recognize_bold_end)), })); - let (remaining, captured) = recognize(tuple(( - bold_start, - |i| context_many_till(&nom_context, flat_text_element, context_bold_end)(i), - )))(i)?; + let (remaining, captured) = recognize(tuple((bold_start, |i| { + context_many_till(&nom_context, flat_text_element, context_bold_end)(i) + })))(i)?; let ret = Bold { contents: captured }; Ok((remaining, ret)) }