From 33cb1a71ec8bd8e2edda3ed6d2a112bff69c956a Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 24 Sep 2019 23:00:30 -0700 Subject: [PATCH] Fix MD039/no-space-in-links to handle links within a multi-line paragraph. --- lib/md039.js | 7 ++++++- test/spaces_inside_link_text.md | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/md039.js b/lib/md039.js index 55c33b8d..f9464cf7 100644 --- a/lib/md039.js +++ b/lib/md039.js @@ -12,7 +12,8 @@ module.exports = { "tags": [ "whitespace", "links" ], "function": function MD039(params, onError) { filterTokens(params, "inline", (token) => { - const { line, lineNumber, children } = token; + const { children } = token; + let { lineNumber } = token; let inLink = false; let linkText = ""; let lineIndex = 0; @@ -25,6 +26,7 @@ module.exports = { const left = linkText.trimLeft().length !== linkText.length; const right = linkText.trimRight().length !== linkText.length; if (left || right) { + const line = params.lines[lineNumber - 1]; const match = line.slice(lineIndex).match(spaceInLinkRe); const column = match.index + lineIndex + 1; const length = match[0].length; @@ -43,6 +45,9 @@ module.exports = { } ); } + } else if (child.type === "softbreak") { + lineNumber++; + lineIndex = 0; } else if (inLink) { linkText += child.content; } diff --git a/test/spaces_inside_link_text.md b/test/spaces_inside_link_text.md index 6b3a6dc1..76f2f420 100644 --- a/test/spaces_inside_link_text.md +++ b/test/spaces_inside_link_text.md @@ -30,3 +30,14 @@ The following shouldn't break anything: [![Screenshot.png](/images/Screenshot.png)](/images/Screenshot.png) + +function CodeButNotCode(input) { + return input.replace(/[- ]([a-z])/g, "one"); // {MD039} +} + +function MoreCodeButNotCode(input) { + input = input.replace(/[- ]([a-z])/g, "two"); // {MD039} + input = input.toLowerCase(); + input = input.replace(/[- ]([a-z])/g, "three"); // {MD039} + return input; +}