From b4d44531868521b13d18403688248795aab1e786 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 23 Apr 2023 17:37:35 -0400 Subject: [PATCH] Just doing a simple match everything for path reg. --- src/parser/regular_link.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/parser/regular_link.rs b/src/parser/regular_link.rs index 9b3084f..8793f3f 100644 --- a/src/parser/regular_link.rs +++ b/src/parser/regular_link.rs @@ -1,7 +1,14 @@ use nom::branch::alt; +use nom::bytes::complete::escaped; use nom::bytes::complete::tag; +use nom::bytes::complete::take_till1; +use nom::character::complete::line_ending; +use nom::character::complete::one_of; +use nom::character::complete::space0; +use nom::combinator::opt; use nom::combinator::verify; use nom::multi::many_till; +use nom::sequence::tuple; use super::parser_with_context::parser_with_context; use super::util::get_consumed; @@ -54,9 +61,15 @@ pub fn regular_link_with_description<'r, 's>( #[tracing::instrument(ret, level = "debug")] pub fn pathreg<'r, 's>(context: Context<'r, 's>, input: &'s str) -> Res<&'s str, &'s str> { - let (remaining, _opening_bracket) = tag("[[")(input)?; - // pathreg - todo!() + let (remaining, path) = escaped( + take_till1(|c| match c { + '\\' | ']' => true, + _ => false, + }), + '\\', + one_of(r#"]"#), + )(input)?; + Ok((remaining, path)) } #[tracing::instrument(ret, level = "debug")]