From daec896b8d846e5c7f547357b00885ad10061a62 Mon Sep 17 00:00:00 2001
From: David Anson
Date: Wed, 13 Sep 2023 22:44:15 -0700
Subject: [PATCH] Update MD034/no-bare-urls to scan all tokens when pruning
HTML content so open/close pairs with different parents are handled (fixes
#966).
---
demo/markdownlint-browser.js | 54 ++++++++--------
lib/md034.js | 60 +++++++++---------
test/bare-urls.md | 20 ++++++
.../markdownlint-test-scenarios.js.md | 26 +++++++-
.../markdownlint-test-scenarios.js.snap | Bin 198439 -> 198453 bytes
5 files changed, 100 insertions(+), 60 deletions(-)
diff --git a/demo/markdownlint-browser.js b/demo/markdownlint-browser.js
index 78519bb2..1ca9d6cd 100644
--- a/demo/markdownlint-browser.js
+++ b/demo/markdownlint-browser.js
@@ -5057,6 +5057,7 @@ var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
addErrorContext = _require.addErrorContext;
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
filterByPredicate = _require2.filterByPredicate,
+ filterByTypes = _require2.filterByTypes,
getHtmlTagInfo = _require2.getHtmlTagInfo,
parse = _require2.parse;
module.exports = {
@@ -5065,39 +5066,40 @@ module.exports = {
"tags": ["links", "url"],
"function": function MD034(params, onError) {
var literalAutolinks = function literalAutolinks(tokens) {
- return filterByPredicate(tokens, function (token) {
- return token.type === "literalAutolink";
- }, function (token) {
- var children = token.children;
- var result = [];
- for (var i = 0; i < children.length; i++) {
- var openToken = children[i];
- var openTagInfo = getHtmlTagInfo(openToken);
- if (openTagInfo && !openTagInfo.close) {
- var count = 1;
- for (var j = i + 1; j < children.length; j++) {
- var closeToken = children[j];
- var closeTagInfo = getHtmlTagInfo(closeToken);
- if (closeTagInfo && openTagInfo.name === closeTagInfo.name) {
- if (closeTagInfo.close) {
- count--;
- if (count === 0) {
- i = j;
- break;
- }
- } else {
- count++;
+ var flattened = filterByPredicate(tokens, function () {
+ return true;
+ });
+ var result = [];
+ for (var i = 0; i < flattened.length; i++) {
+ var current = flattened[i];
+ var openTagInfo = getHtmlTagInfo(current);
+ if (openTagInfo && !openTagInfo.close) {
+ var count = 1;
+ for (var j = i + 1; j < flattened.length; j++) {
+ var candidate = flattened[j];
+ var closeTagInfo = getHtmlTagInfo(candidate);
+ if (closeTagInfo && openTagInfo.name === closeTagInfo.name) {
+ if (closeTagInfo.close) {
+ count--;
+ if (count === 0) {
+ i = j;
+ break;
}
+ } else {
+ count++;
}
}
- } else {
- result.push(openToken);
}
+ } else {
+ result.push(current);
}
- return result;
+ }
+ return result.filter(function (token) {
+ return token.type === "literalAutolink";
});
};
- if (literalAutolinks(params.parsers.micromark.tokens).length > 0) {
+ var autoLinks = filterByTypes(params.parsers.micromark.tokens, ["literalAutolink"]);
+ if (autoLinks.length > 0) {
// Re-parse with correct link/image reference definition handling
var document = params.lines.join("\n");
var tokens = parse(document, undefined, false);
diff --git a/lib/md034.js b/lib/md034.js
index 4051c36f..5b6e933d 100644
--- a/lib/md034.js
+++ b/lib/md034.js
@@ -3,7 +3,7 @@
"use strict";
const { addErrorContext } = require("../helpers");
-const { filterByPredicate, getHtmlTagInfo, parse } =
+const { filterByPredicate, filterByTypes, getHtmlTagInfo, parse } =
require("../helpers/micromark.cjs");
module.exports = {
@@ -11,42 +11,40 @@ module.exports = {
"description": "Bare URL used",
"tags": [ "links", "url" ],
"function": function MD034(params, onError) {
- const literalAutolinks = (tokens) => (
- filterByPredicate(
- tokens,
- (token) => token.type === "literalAutolink",
- (token) => {
- const { children } = token;
- const result = [];
- for (let i = 0; i < children.length; i++) {
- const openToken = children[i];
- const openTagInfo = getHtmlTagInfo(openToken);
- if (openTagInfo && !openTagInfo.close) {
- let count = 1;
- for (let j = i + 1; j < children.length; j++) {
- const closeToken = children[j];
- const closeTagInfo = getHtmlTagInfo(closeToken);
- if (closeTagInfo && (openTagInfo.name === closeTagInfo.name)) {
- if (closeTagInfo.close) {
- count--;
- if (count === 0) {
- i = j;
- break;
- }
- } else {
- count++;
- }
+ const literalAutolinks = (tokens) => {
+ const flattened = filterByPredicate(tokens, () => true);
+ const result = [];
+ for (let i = 0; i < flattened.length; i++) {
+ const current = flattened[i];
+ const openTagInfo = getHtmlTagInfo(current);
+ if (openTagInfo && !openTagInfo.close) {
+ let count = 1;
+ for (let j = i + 1; j < flattened.length; j++) {
+ const candidate = flattened[j];
+ const closeTagInfo = getHtmlTagInfo(candidate);
+ if (closeTagInfo && (openTagInfo.name === closeTagInfo.name)) {
+ if (closeTagInfo.close) {
+ count--;
+ if (count === 0) {
+ i = j;
+ break;
}
+ } else {
+ count++;
}
- } else {
- result.push(openToken);
}
}
- return result;
+ } else {
+ result.push(current);
}
- )
+ }
+ return result.filter((token) => token.type === "literalAutolink");
+ };
+ const autoLinks = filterByTypes(
+ params.parsers.micromark.tokens,
+ [ "literalAutolink" ]
);
- if (literalAutolinks(params.parsers.micromark.tokens).length > 0) {
+ if (autoLinks.length > 0) {
// Re-parse with correct link/image reference definition handling
const document = params.lines.join("\n");
const tokens = parse(document, undefined, false);
diff --git a/test/bare-urls.md b/test/bare-urls.md
index 67b83cca..cca8bc26 100644
--- a/test/bare-urls.md
+++ b/test/bare-urls.md
@@ -59,6 +59,26 @@ https://example.com
https://example.com
+
+https://example.com
+
+
+
+https://example.com
+
+
+
+
+
+https://example.com
+
+
+
+
+https://example.com
+
+
+
URLs in link and image text are not bare:
Text [link to https://example.com site](https://example.com) text.
diff --git a/test/snapshots/markdownlint-test-scenarios.js.md b/test/snapshots/markdownlint-test-scenarios.js.md
index 9d342c9d..2006fc51 100644
--- a/test/snapshots/markdownlint-test-scenarios.js.md
+++ b/test/snapshots/markdownlint-test-scenarios.js.md
@@ -3526,7 +3526,7 @@ Generated by [AVA](https://avajs.dev).
editColumn: 27,
insertText: '',
},
- lineNumber: 68,
+ lineNumber: 88,
ruleDescription: 'Bare URL used',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md034.md',
ruleNames: [
@@ -3546,7 +3546,7 @@ Generated by [AVA](https://avajs.dev).
editColumn: 40,
insertText: '',
},
- lineNumber: 76,
+ lineNumber: 96,
ruleDescription: 'Bare URL used',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md034.md',
ruleNames: [
@@ -3566,7 +3566,7 @@ Generated by [AVA](https://avajs.dev).
editColumn: 59,
insertText: '',
},
- lineNumber: 84,
+ lineNumber: 104,
ruleDescription: 'Bare URL used',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md034.md',
ruleNames: [
@@ -3636,6 +3636,26 @@ Generated by [AVA](https://avajs.dev).
https://example.com
␊
␊
␊
+ ␊
+ https://example.com␊
+
␊
+ ␊
+ ␊
+ https://example.com␊
+ ␊
+
␊
+ ␊
+ ␊
+ ␊
+ https://example.com␊
+
␊
+ ␊
+ ␊
+ ␊
+ https://example.com␊
+ ␊
+
␊
+ ␊
URLs in link and image text are not bare:␊
␊
Text [link to https://example.com site](https://example.com) text.␊
diff --git a/test/snapshots/markdownlint-test-scenarios.js.snap b/test/snapshots/markdownlint-test-scenarios.js.snap
index 6b6bf1e130ba2e9ef24aa0e5b458bfd91f094633..5b24c07c7f9d89edd4f509f1dc82067f944a983e 100644
GIT binary patch
delta 172519
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