aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-10-28 18:30:46 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-10-28 18:30:46 +0200
commit5d5e94567e7a87a3cefdda410e3bd9e36e26eca5 (patch)
treed68dbac9cd49c10f8460f46f8c9ab9b25019973c
parente485745c6924e41f2896f579b5454cfb800e13f6 (diff)
downloadmarkdown-rs-5d5e94567e7a87a3cefdda410e3bd9e36e26eca5.tar.gz
markdown-rs-5d5e94567e7a87a3cefdda410e3bd9e36e26eca5.tar.bz2
markdown-rs-5d5e94567e7a87a3cefdda410e3bd9e36e26eca5.zip
Fix GFM autolink literals that end in in GFM table pipes
Closes GH-20. Co-authored-by: Christian Murphy <christian.murphy.42@gmail.com>
-rw-r--r--src/construct/gfm_autolink_literal.rs5
-rw-r--r--tests/fuzz.rs6
2 files changed, 9 insertions, 2 deletions
diff --git a/src/construct/gfm_autolink_literal.rs b/src/construct/gfm_autolink_literal.rs
index 0704da7..5438e36 100644
--- a/src/construct/gfm_autolink_literal.rs
+++ b/src/construct/gfm_autolink_literal.rs
@@ -470,8 +470,9 @@ pub fn path_inside(tokenizer: &mut Tokenizer) -> State {
}
_ => {
// Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.
- if kind_after_index(tokenizer.parse_state.bytes, tokenizer.point.index)
- == CharacterKind::Whitespace
+ if tokenizer.current.is_none()
+ || kind_after_index(tokenizer.parse_state.bytes, tokenizer.point.index)
+ == CharacterKind::Whitespace
{
State::Retry(StateName::GfmAutolinkLiteralPathAfter)
} else {
diff --git a/tests/fuzz.rs b/tests/fuzz.rs
index 54b4f40..522e32f 100644
--- a/tests/fuzz.rs
+++ b/tests/fuzz.rs
@@ -98,5 +98,11 @@ fn fuzz() -> Result<(), String> {
"8-d: autolink literals after tabs (GH-18)"
);
+ assert_eq!(
+ to_html_with_options("| a |\n| - |\n| www.a|", &Options::gfm()),
+ Ok("<table>\n<thead>\n<tr>\n<th>a</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"http://www.a\">www.a</a></td>\n</tr>\n</tbody>\n</table>".into()),
+ "9: autolink literals that end in table cell delimiter (GH-20)"
+ );
+
Ok(())
}