diff --git a/src/parser/text_element_parser.rs b/src/parser/text_element_parser.rs index 9ee7ffc..c621533 100644 --- a/src/parser/text_element_parser.rs +++ b/src/parser/text_element_parser.rs @@ -56,12 +56,15 @@ where T: for<'a> Fn(Context<'a>, I) -> IResult + 'r, { move |mut i: I| { - let mut ret = Vec::new(); let mut current_context = context.clone(); loop { let len = i.input_len(); match till_matcher(¤t_context, i.clone()) { - Ok((remaining, finish)) => return Ok((remaining, (ret, finish))), + Ok((remaining, finish)) => { + let mut ret = Vec::new(); + // TODO build a vec of the elements by popping off the newest elements of the context + return Ok((remaining, (ret, finish))); + } Err(nom::Err::Error(_)) => { match many_matcher(¤t_context, i.clone()) { Err(nom::Err::Error(err)) => { @@ -77,7 +80,6 @@ where ))); } - ret.push(many_elem); current_context = current_context.with_additional_node( ContextElement::PreviousElementNode(PreviousElementNode { element: many_elem.into(),