From 52049d87e121ca4162d20d7d856fa6992641654d Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Thu, 27 Oct 2022 01:20:42 -0500 Subject: [PATCH 1/3] fix: fix escape characters in links --- src/Tokenizer.js | 8 ++++++-- test/specs/commonmark/commonmark.0.30.json | 9 +++------ test/specs/gfm/commonmark.0.30.json | 9 +++------ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/Tokenizer.js b/src/Tokenizer.js index 76f26e67fb..ad0756b9d4 100644 --- a/src/Tokenizer.js +++ b/src/Tokenizer.js @@ -99,11 +99,12 @@ export class Tokenizer { if (cap) { const raw = cap[0]; const text = indentCodeCompensation(raw, cap[3] || ''); + const lang = (cap[2] ? cap[2].trim() : cap[2]).replace(this.rules.inline._escapes, '$1'); return { type: 'code', raw, - lang: cap[2] ? cap[2].trim() : cap[2], + lang, text }; } @@ -582,7 +583,10 @@ export class Tokenizer { text }; } - return outputLink(cap, link, cap[0], this.lexer); + return outputLink(cap, { + href: link.href.replace(this.rules.inline._escapes, '$1'), + title: link.title ? link.title.replace(this.rules.inline._escapes, '$1') : link.title + }, cap[0], this.lexer); } } diff --git a/test/specs/commonmark/commonmark.0.30.json b/test/specs/commonmark/commonmark.0.30.json index 62a0dfe076..261eb25c9e 100644 --- a/test/specs/commonmark/commonmark.0.30.json +++ b/test/specs/commonmark/commonmark.0.30.json @@ -181,8 +181,7 @@ "example": 23, "start_line": 605, "end_line": 611, - "section": "Backslash escapes", - "shouldFail": true + "section": "Backslash escapes" }, { "markdown": "``` foo\\+bar\nfoo\n```\n", @@ -190,8 +189,7 @@ "example": 24, "start_line": 614, "end_line": 621, - "section": "Backslash escapes", - "shouldFail": true + "section": "Backslash escapes" }, { "markdown": "  & © Æ Ď\n¾ ℋ ⅆ\n∲ ≧̸\n", @@ -1624,8 +1622,7 @@ "example": 202, "start_line": 3307, "end_line": 3313, - "section": "Link reference definitions", - "shouldFail": true + "section": "Link reference definitions" }, { "markdown": "[foo]\n\n[foo]: url\n", diff --git a/test/specs/gfm/commonmark.0.30.json b/test/specs/gfm/commonmark.0.30.json index e32558a3a3..6cb2e60a50 100644 --- a/test/specs/gfm/commonmark.0.30.json +++ b/test/specs/gfm/commonmark.0.30.json @@ -181,8 +181,7 @@ "example": 23, "start_line": 605, "end_line": 611, - "section": "Backslash escapes", - "shouldFail": true + "section": "Backslash escapes" }, { "markdown": "``` foo\\+bar\nfoo\n```\n", @@ -190,8 +189,7 @@ "example": 24, "start_line": 614, "end_line": 621, - "section": "Backslash escapes", - "shouldFail": true + "section": "Backslash escapes" }, { "markdown": "  & © Æ Ď\n¾ ℋ ⅆ\n∲ ≧̸\n", @@ -1624,8 +1622,7 @@ "example": 202, "start_line": 3307, "end_line": 3313, - "section": "Link reference definitions", - "shouldFail": true + "section": "Link reference definitions" }, { "markdown": "[foo]\n\n[foo]: url\n", From 76349a534736db2a621582a9fc0e29921944a634 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Thu, 27 Oct 2022 01:26:32 -0500 Subject: [PATCH 2/3] chore: remove escapes in def --- src/Tokenizer.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Tokenizer.js b/src/Tokenizer.js index ad0756b9d4..294cfc559e 100644 --- a/src/Tokenizer.js +++ b/src/Tokenizer.js @@ -372,8 +372,8 @@ export class Tokenizer { type: 'def', tag, raw: cap[0], - href: cap[2], - title: cap[3] + href: cap[2] ? cap[2].replace(this.rules.inline._escapes, '$1') : cap[2], + title: cap[3] ? cap[3].replace(this.rules.inline._escapes, '$1') : cap[3] }; } } @@ -583,10 +583,7 @@ export class Tokenizer { text }; } - return outputLink(cap, { - href: link.href.replace(this.rules.inline._escapes, '$1'), - title: link.title ? link.title.replace(this.rules.inline._escapes, '$1') : link.title - }, cap[0], this.lexer); + return outputLink(cap, link, cap[0], this.lexer); } } From cee4930d4f19608ecc3ab6792f7d82f1c9bd8fe1 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Thu, 27 Oct 2022 01:33:07 -0500 Subject: [PATCH 3/3] chore: fix lang replace on undefined --- src/Tokenizer.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Tokenizer.js b/src/Tokenizer.js index 294cfc559e..a77195b1a3 100644 --- a/src/Tokenizer.js +++ b/src/Tokenizer.js @@ -99,12 +99,11 @@ export class Tokenizer { if (cap) { const raw = cap[0]; const text = indentCodeCompensation(raw, cap[3] || ''); - const lang = (cap[2] ? cap[2].trim() : cap[2]).replace(this.rules.inline._escapes, '$1'); return { type: 'code', raw, - lang, + lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2], text }; }