mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 22:40:13 +01:00
Update MD034/no-bare-urls to allow bare URLs inside the link text of HTML A tags (fixes 615).
This commit is contained in:
parent
2e63bf7dd8
commit
f84c91d95f
5 changed files with 99 additions and 8 deletions
15
lib/md034.js
15
lib/md034.js
|
|
@ -4,6 +4,9 @@
|
|||
|
||||
const { addErrorContext, bareUrlRe, filterTokens } = require("../helpers");
|
||||
|
||||
const htmlLinkOpenRe = /^<a[\s>]/i;
|
||||
const htmlLinkCloseRe = /^<\/a[\s>]/i;
|
||||
|
||||
module.exports = {
|
||||
"names": [ "MD034", "no-bare-urls" ],
|
||||
"description": "Bare URL used",
|
||||
|
|
@ -11,6 +14,7 @@ module.exports = {
|
|||
"function": function MD034(params, onError) {
|
||||
filterTokens(params, "inline", (token) => {
|
||||
let inLink = false;
|
||||
let inInline = false;
|
||||
for (const child of token.children) {
|
||||
const { content, line, lineNumber, type } = child;
|
||||
let match = null;
|
||||
|
|
@ -18,14 +22,17 @@ module.exports = {
|
|||
inLink = true;
|
||||
} else if (type === "link_close") {
|
||||
inLink = false;
|
||||
} else if ((type === "text") && !inLink) {
|
||||
} else if ((type === "html_inline") && htmlLinkOpenRe.test(content)) {
|
||||
inInline = true;
|
||||
} else if ((type === "html_inline") && htmlLinkCloseRe.test(content)) {
|
||||
inInline = false;
|
||||
} else if ((type === "text") && !inLink && !inInline) {
|
||||
while ((match = bareUrlRe.exec(content)) !== null) {
|
||||
const [ bareUrl ] = match;
|
||||
const matchIndex = match.index;
|
||||
const bareUrlLength = bareUrl.length;
|
||||
// Allow "[https://example.com]" to avoid conflicts with
|
||||
// MD011/no-reversed-links; allow quoting as another way
|
||||
// of deliberately including a bare URL
|
||||
// Allow "[LINK]" to avoid conflicts with MD011/no-reversed-links
|
||||
// Allow quoting as a way of deliberately including a bare URL
|
||||
const leftChar = content[matchIndex - 1];
|
||||
const rightChar = content[matchIndex + bareUrlLength];
|
||||
if (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue