diff --git a/org_mode_samples/object/plain_link/end_with_punctuation.org b/org_mode_samples/object/plain_link/end_with_punctuation.org index 92df33d4..5a234913 100644 --- a/org_mode_samples/object/plain_link/end_with_punctuation.org +++ b/org_mode_samples/object/plain_link/end_with_punctuation.org @@ -1 +1,3 @@ mailto:foo@bar.baz. + +mailto:foo@bar.baz.... diff --git a/src/parser/plain_link.rs b/src/parser/plain_link.rs index 8518ae6c..387f788b 100644 --- a/src/parser/plain_link.rs +++ b/src/parser/plain_link.rs @@ -134,6 +134,7 @@ fn path_plain<'r, 's>( many_till(anychar, peek(exit_matcher)), |(children, _exit_contents)| !children.is_empty(), ))(input)?; + Ok((remaining, path)) } @@ -142,5 +143,10 @@ fn path_plain_end<'r, 's>( _context: Context<'r, 's>, input: OrgSource<'s>, ) -> Res, OrgSource<'s>> { - recognize(one_of(" \t\r\n()[]<>"))(input) + recognize(many_till( + verify(anychar, |c| { + *c != '/' && (c.is_ascii_punctuation() || c.is_whitespace()) + }), + one_of(" \t\r\n()[]<>"), + ))(input) }