Re-arrange context parameter order.

This commit is contained in:
Tom Alexander 2022-11-26 19:26:48 -05:00
parent 29a53044ea
commit 4d58ed3bea
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
2 changed files with 9 additions and 5 deletions

View File

@ -1,6 +1,6 @@
macro_rules! parser_with_context {
($target:ident) => {
move |context| move |i| $target(i, context)
move |context| move |i| $target(context, i)
};
}
pub(crate) use parser_with_context;

View File

@ -35,6 +35,10 @@ use nom::IResult;
use tracing::instrument;
use tracing::trace;
fn context_many_till() {
todo!()
}
pub fn document(input: &str) -> Res<&str, Vec<(Vec<TextElement>, &str)>> {
let initial_context = ContextTree::new();
let ret = many1(parser_with_context!(paragraph)(&initial_context))(input);
@ -42,8 +46,8 @@ pub fn document(input: &str) -> Res<&str, Vec<(Vec<TextElement>, &str)>> {
}
pub fn paragraph<'s, 'r>(
i: &'s str,
context: &'r OrgModeContextNode<'r>,
i: &'s str,
) -> Res<&'s str, (Vec<TextElement<'s>>, &'s str)> {
// Add a not(eof) check because many_till cannot match a zero-length string
not(eof)(i)?;
@ -54,8 +58,8 @@ pub fn paragraph<'s, 'r>(
}
fn flat_text_element<'s, 'r>(
i: &'s str,
context: &'r OrgModeContextNode<'r>,
i: &'s str,
) -> Res<&'s str, TextElement<'s>> {
not(|i| context.match_fail(i))(i)?;
@ -78,7 +82,7 @@ fn recognize_bold_end(input: &str) -> Res<&str, &str> {
recognize(bold_end)(input)
}
fn flat_bold<'s, 'r>(i: &'s str, context: &'r OrgModeContextNode<'r>) -> Res<&'s str, Bold<'s>> {
fn flat_bold<'s, 'r>(context: &'r OrgModeContextNode<'r>, i: &'s str) -> Res<&'s str, Bold<'s>> {
let new_context = context.with_additional_fail_matcher(&recognize_bold_end);
let text_element_parser = parser_with_context!(flat_text_element)(&new_context);
let (remaining, captured) = recognize(tuple((
@ -93,7 +97,7 @@ fn recognize_link_end(input: &str) -> Res<&str, &str> {
recognize(link_end)(input)
}
fn flat_link<'s, 'r>(i: &'s str, context: &'r OrgModeContextNode<'r>) -> Res<&'s str, Link<'s>> {
fn flat_link<'s, 'r>(context: &'r OrgModeContextNode<'r>, i: &'s str) -> Res<&'s str, Link<'s>> {
let new_context = context.with_additional_fail_matcher(&recognize_link_end);
let text_element_parser = parser_with_context!(flat_text_element)(&new_context);
let (remaining, captured) = recognize(tuple((