diff --git a/src/parser/bold.rs b/src/parser/bold.rs index 04590e0f..fe6986b0 100644 --- a/src/parser/bold.rs +++ b/src/parser/bold.rs @@ -10,9 +10,9 @@ use super::text::symbol; use super::text::Bold; use super::text::Res; use super::text::TextElement; -use super::text_element_parser::_preceded_by_whitespace; use super::text_element_parser::flat_text_element; use super::text_element_parser::in_section; +use super::token::Token; use super::Context; use nom::branch::alt; use nom::bytes::complete::tag; @@ -70,3 +70,36 @@ fn bold_start(input: &str) -> Res<&str, TextElement> { fn bold_end(input: &str) -> Res<&str, TextElement> { map(symbol("*"), TextElement::Symbol)(input) } + +fn _preceded_by_whitespace<'s, 'r>(context: Context<'r, 's>) -> bool { + let mut context_iterator = context.iter().enumerate(); + loop { + if let Some((i, ctx)) = context_iterator.next() { + match ctx.get_data() { + ContextElement::ExitMatcherNode(_) => {} + ContextElement::PreviousElementNode(previous_element_node) => { + match &previous_element_node.element { + Token::TextElement(text_element) => { + match text_element { + TextElement::Span(_) => return false, + TextElement::Space(_) => return true, + TextElement::LineBreak(_) => return true, + TextElement::Symbol(_) => return false, + TextElement::Bold(_) => return false, + TextElement::Link(_) => return false, + }; + } + Token::Paragraph(_) => unreachable!(), + }; + } + ContextElement::StartOfParagraph => { + return true; + } + ContextElement::Context(_) => {} + } + } else { + break; + } + } + false +} diff --git a/src/parser/text_element_parser.rs b/src/parser/text_element_parser.rs index 24b92cfa..ac533d80 100644 --- a/src/parser/text_element_parser.rs +++ b/src/parser/text_element_parser.rs @@ -48,39 +48,6 @@ pub fn in_section<'s, 'r, 'x>(context: Context<'r, 's>, section_name: &'x str) - false } -pub fn _preceded_by_whitespace<'s, 'r>(context: Context<'r, 's>) -> bool { - let mut context_iterator = context.iter().enumerate(); - loop { - if let Some((i, ctx)) = context_iterator.next() { - match ctx.get_data() { - ContextElement::ExitMatcherNode(_) => {} - ContextElement::PreviousElementNode(previous_element_node) => { - match &previous_element_node.element { - Token::TextElement(text_element) => { - match text_element { - TextElement::Span(_) => return false, - TextElement::Space(_) => return true, - TextElement::LineBreak(_) => return true, - TextElement::Symbol(_) => return false, - TextElement::Bold(_) => return false, - TextElement::Link(_) => return false, - }; - } - Token::Paragraph(_) => unreachable!(), - }; - } - ContextElement::StartOfParagraph => { - return true; - } - ContextElement::Context(_) => {} - } - } else { - break; - } - } - false -} - pub fn flat_text_element<'s, 'r>( context: Context<'r, 's>, i: &'s str,