Skip to content

Commit

Permalink
Improve MD034/no-bare-urls range reporting (fixes #181).
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidAnson committed May 5, 2019
1 parent dba6d49 commit 684416a
Show file tree
Hide file tree
Showing 4 changed files with 138 additions and 11 deletions.
26 changes: 15 additions & 11 deletions lib/md034.js
Expand Up @@ -2,27 +2,31 @@

"use strict";

const { addErrorContext, bareUrlRe, filterTokens, rangeFromRegExp } =
require("../helpers");
const { addErrorContext, bareUrlRe, filterTokens } = require("../helpers");

module.exports = {
"names": [ "MD034", "no-bare-urls" ],
"description": "Bare URL used",
"tags": [ "links", "url" ],
"function": function MD034(params, onError) {
filterTokens(params, "inline", function forToken(token) {
filterTokens(params, "inline", (token) => {
let inLink = false;
token.children.forEach(function forChild(child) {
token.children.forEach((child) => {
const { content, line, lineNumber, type } = child;
let match = null;
if (child.type === "link_open") {
if (type === "link_open") {
inLink = true;
} else if (child.type === "link_close") {
} else if (type === "link_close") {
inLink = false;
} else if ((child.type === "text") &&
!inLink &&
(match = bareUrlRe.exec(child.content))) {
addErrorContext(onError, child.lineNumber, match[0], null,
null, rangeFromRegExp(child.line, bareUrlRe));
} else if ((type === "text") && !inLink &&
(match = bareUrlRe.exec(content))) {
const [ bareUrl ] = match;
const index = line.indexOf(content);
const range = (index === -1) ? null : [
line.indexOf(content) + match.index + 1,
bareUrl.length
];
addErrorContext(onError, lineNumber, bareUrl, null, null, range);
}
});
});
Expand Down
5 changes: 5 additions & 0 deletions test/detailed-results-links.json
@@ -0,0 +1,5 @@
{
"default": true,
"MD013": false,
"MD046": false
}
26 changes: 26 additions & 0 deletions test/detailed-results-links.md
@@ -0,0 +1,26 @@
# Detailed Link Results

Text https://example.com/ text

Text <https://example.com/brackets> text https://example.com/bare text

Text https://example.com/bare text <https://example.com/brackets> text

Text `code https://example.com/code code` text https://example.com/ text

> Text <https://example.com/brackets> text https://example.com/bare text
Text https://example.com/dir
text https://example.com/file.txt
text <https://example.com/dir/dir>
text https://example.com/dir/dir/file?query=param

```text
Code https://example.com/code?type=fence code
```

Code https://example.com/code?type=indent code

Text <https://example.com/same> more text https://example.com/same still more text <https://example.com/same> done

Text <https://example.com/same> more \* text https://example.com/same more \[ text <https://example.com/same> done
92 changes: 92 additions & 0 deletions test/detailed-results-links.results.json
@@ -0,0 +1,92 @@
[
{
"lineNumber": 3,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/",
"errorRange": [ 6, 20 ]
},
{
"lineNumber": 5,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/bare",
"errorRange": [ 42, 24 ]
},
{
"lineNumber": 7,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/bare",
"errorRange": [ 6, 24 ]
},
{
"lineNumber": 9,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/",
"errorRange": [ 48, 20 ]
},
{
"lineNumber": 11,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/bare",
"errorRange": [ 44, 24 ]
},
{
"lineNumber": 13,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/dir",
"errorRange": [ 6, 23 ]
},
{
"lineNumber": 14,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/file.txt",
"errorRange": [ 6, 28 ]
},
{
"lineNumber": 16,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/dir/dir/fi...",
"errorRange": [ 6, 44 ]
},
{
"lineNumber": 24,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/same",
"errorRange": [ 43, 24 ]
},
{
"lineNumber": 26,
"ruleNames": [ "MD034", "no-bare-urls" ],
"ruleDescription": "Bare URL used",
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md034",
"errorDetail": null,
"errorContext": "https://example.com/same",
"errorRange": null
}
]

0 comments on commit 684416a

Please sign in to comment.