diff --git a/lib/md039.js b/lib/md039.js index 146ebd90..55c33b8d 100644 --- a/lib/md039.js +++ b/lib/md039.js @@ -15,6 +15,7 @@ module.exports = { const { line, lineNumber, children } = token; let inLink = false; let linkText = ""; + let lineIndex = 0; children.forEach((child) => { if (child.type === "link_open") { inLink = true; @@ -24,9 +25,10 @@ module.exports = { const left = linkText.trimLeft().length !== linkText.length; const right = linkText.trimRight().length !== linkText.length; if (left || right) { - const match = line.match(spaceInLinkRe); - const column = match.index + 1; + const match = line.slice(lineIndex).match(spaceInLinkRe); + const column = match.index + lineIndex + 1; const length = match[0].length; + lineIndex = column + length - 1; addErrorContext( onError, lineNumber, diff --git a/test/detailed-results-MD031-MD040.md b/test/detailed-results-MD031-MD040.md index d59ebb47..31b18371 100644 --- a/test/detailed-results-MD031-MD040.md +++ b/test/detailed-results-MD031-MD040.md @@ -56,3 +56,5 @@ text text ```` code span code span```` text text. + +Text [ space](link) text [space ](link) text [ space ](link) text. diff --git a/test/detailed-results-MD031-MD040.md.fixed b/test/detailed-results-MD031-MD040.md.fixed index a28211ef..70e70654 100644 --- a/test/detailed-results-MD031-MD040.md.fixed +++ b/test/detailed-results-MD031-MD040.md.fixed @@ -58,3 +58,5 @@ text text ````code span code span```` text text. + +Text [space](link) text [space](link) text [space](link) text. diff --git a/test/detailed-results-MD031-MD040.results.json b/test/detailed-results-MD031-MD040.results.json index d6cfe843..13da02e5 100644 --- a/test/detailed-results-MD031-MD040.results.json +++ b/test/detailed-results-MD031-MD040.results.json @@ -33,7 +33,7 @@ "ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md033", "errorDetail": "Element: hr", "errorContext": null, - "errorRange": [7, 5] + "errorRange": [ 7, 5 ] }, { "lineNumber": 8, @@ -42,7 +42,7 @@ "ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034", "errorDetail": null, "errorContext": "https://example.com", - "errorRange": [6, 19] + "errorRange": [ 6, 19 ] }, { "lineNumber": 11, @@ -69,7 +69,7 @@ "ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md037", "errorDetail": null, "errorContext": "* inside *", - "errorRange": [7, 10] + "errorRange": [ 7, 10 ] }, { "lineNumber": 31, @@ -123,7 +123,7 @@ "ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md038", "errorDetail": null, "errorContext": "` inside `", - "errorRange": [7, 10] + "errorRange": [ 7, 10 ] }, { "lineNumber": 24, @@ -222,7 +222,16 @@ "ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md039", "errorDetail": null, "errorContext": "[ inside ]", - "errorRange": [7, 10] + "errorRange": [ 7, 10 ] + }, + { + "lineNumber": 60, + "ruleNames": [ "MD039", "no-space-in-links" ], + "ruleDescription": "Spaces inside link text", + "ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md039", + "errorDetail": null, + "errorContext": "[ space]", + "errorRange": [ 6, 8 ] }, { "lineNumber": 21,