Update MD051/link-fragments to ignore HTML comments embedded in heading text.

This commit is contained in:
David Anson 2022-07-19 06:29:52 +00:00 committed by GitHub
parent 6700accfd3
commit 1bd748f79e
5 changed files with 40 additions and 10 deletions

View file

@ -4610,7 +4610,10 @@ const identifierRe = /(?:id|name)\s*=\s*['"]?([^'"\s>]+)/iu;
* @returns {string} Fragment string for heading. * @returns {string} Fragment string for heading.
*/ */
function convertHeadingToHTMLFragment(inline) { function convertHeadingToHTMLFragment(inline) {
const inlineText = inline.children.map((token) => token.content).join(""); const inlineText = inline.children
.filter((token) => token.type !== "html_inline")
.map((token) => token.content)
.join("");
return "#" + encodeURIComponent(inlineText return "#" + encodeURIComponent(inlineText
.toLowerCase() .toLowerCase()
// RegExp source with Ruby's \p{Word} expanded into its General Categories // RegExp source with Ruby's \p{Word} expanded into its General Categories
@ -4663,7 +4666,7 @@ module.exports = {
context = match[0]; context = match[0];
range = [match.index + 1, match[0].length]; range = [match.index + 1, match[0].length];
} }
addError(onError, lineNumber, null, context, range); addError(onError, lineNumber, undefined, context, range);
} }
}); });
} }

View file

@ -16,7 +16,10 @@ const identifierRe = /(?:id|name)\s*=\s*['"]?([^'"\s>]+)/iu;
* @returns {string} Fragment string for heading. * @returns {string} Fragment string for heading.
*/ */
function convertHeadingToHTMLFragment(inline) { function convertHeadingToHTMLFragment(inline) {
const inlineText = inline.children.map((token) => token.content).join(""); const inlineText = inline.children
.filter((token) => token.type !== "html_inline")
.map((token) => token.content)
.join("");
return "#" + encodeURIComponent( return "#" + encodeURIComponent(
inlineText inlineText
.toLowerCase() .toLowerCase()
@ -77,7 +80,7 @@ module.exports = {
context = match[0]; context = match[0];
range = [ match.index + 1, match[0].length ]; range = [ match.index + 1, match[0].length ];
} }
addError(onError, lineNumber, null, context, range); addError(onError, lineNumber, undefined, context, range);
} }
}); });
} }

View file

@ -32,6 +32,12 @@
[Valid](#valid-repeated-heading-2) [Valid](#valid-repeated-heading-2)
[Valid](#valid-heading-with-trailing-space-)
[Valid](#valid-heading-with-two-trailing-spaces--)
[Valid](#valid-heading-with-embedded--comment)
[Valid](#namedlink) [Valid](#namedlink)
[Valid](#idlink) [Valid](#idlink)
@ -93,6 +99,12 @@ Text
### Valid Repeated Heading ### Valid Repeated Heading
### Valid Heading With Trailing Space <!-- comment -->
### Valid Heading With Two Trailing Spaces <!-- comment -->
### Valid Heading With Embedded <!-- comment --> Comment
<a name="namedlink"></a> <a name="namedlink"></a>
<a id = idlink></a> <a id = idlink></a>

View file

@ -20950,7 +20950,7 @@ Generated by [AVA](https://avajs.dev).
31, 31,
], ],
fixInfo: null, fixInfo: null,
lineNumber: 108, lineNumber: 120,
ruleDescription: 'Link fragments should be valid', ruleDescription: 'Link fragments should be valid',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051', ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051',
ruleNames: [ ruleNames: [
@ -20966,7 +20966,7 @@ Generated by [AVA](https://avajs.dev).
36, 36,
], ],
fixInfo: null, fixInfo: null,
lineNumber: 110, lineNumber: 122,
ruleDescription: 'Link fragments should be valid', ruleDescription: 'Link fragments should be valid',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051', ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051',
ruleNames: [ ruleNames: [
@ -20982,7 +20982,7 @@ Generated by [AVA](https://avajs.dev).
28, 28,
], ],
fixInfo: null, fixInfo: null,
lineNumber: 112, lineNumber: 124,
ruleDescription: 'Link fragments should be valid', ruleDescription: 'Link fragments should be valid',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051', ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051',
ruleNames: [ ruleNames: [
@ -20998,7 +20998,7 @@ Generated by [AVA](https://avajs.dev).
18, 18,
], ],
fixInfo: null, fixInfo: null,
lineNumber: 114, lineNumber: 126,
ruleDescription: 'Link fragments should be valid', ruleDescription: 'Link fragments should be valid',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051', ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051',
ruleNames: [ ruleNames: [
@ -21014,7 +21014,7 @@ Generated by [AVA](https://avajs.dev).
21, 21,
], ],
fixInfo: null, fixInfo: null,
lineNumber: 116, lineNumber: 128,
ruleDescription: 'Link fragments should be valid', ruleDescription: 'Link fragments should be valid',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051', ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051',
ruleNames: [ ruleNames: [
@ -21027,7 +21027,7 @@ Generated by [AVA](https://avajs.dev).
errorDetail: null, errorDetail: null,
errorRange: null, errorRange: null,
fixInfo: null, fixInfo: null,
lineNumber: 118, lineNumber: 130,
ruleDescription: 'Link fragments should be valid', ruleDescription: 'Link fragments should be valid',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051', ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md051',
ruleNames: [ ruleNames: [
@ -21070,6 +21070,12 @@ Generated by [AVA](https://avajs.dev).
[Valid](#valid-repeated-heading-2)␊ [Valid](#valid-repeated-heading-2)␊
[Valid](#valid-heading-with-trailing-space-)␊
[Valid](#valid-heading-with-two-trailing-spaces--)␊
[Valid](#valid-heading-with-embedded--comment)␊
[Valid](#namedlink)␊ [Valid](#namedlink)␊
[Valid](#idlink)␊ [Valid](#idlink)␊
@ -21131,6 +21137,12 @@ Generated by [AVA](https://avajs.dev).
### Valid Repeated Heading␊ ### Valid Repeated Heading␊
### Valid Heading With Trailing Space <!-- comment -->
### Valid Heading With Two Trailing Spaces <!-- comment -->
### Valid Heading With Embedded <!-- comment --> Comment␊
<a name="namedlink"></a> <a name="namedlink"></a>
<a id = idlink></a> <a id = idlink></a>