Skip to content

Commit e4dcf6a

Browse files
authored
fix: skip HTML nodes in heading slugs for no-missing-link-fragments (#445)
1 parent 2bc0a38 commit e4dcf6a

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

docs/rules/no-missing-link-fragments.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ Examples of **correct** code for this rule:
5454
[Link to top of page](#top)
5555

5656
[Link](#L2)
57+
58+
# <span class="icon-star"></span> Starred Projects
59+
60+
[Link to starred projects](#-starred-projects)
5761
```
5862

5963
## Options

src/rules/no-missing-link-fragments.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ function isGitHubLineReference(fragment) {
4747
* @returns {string} The extracted text
4848
*/
4949
function extractText(node) {
50+
if (node.type === "html") {
51+
return "";
52+
}
5053
if ("value" in node) {
5154
return /** @type {string} */ (node.value);
5255
}

tests/rules/no-missing-link-fragments.test.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,37 @@ ruleTester.run("no-missing-link-fragments", rule, {
228228
# foo_
229229
[Link](#foo_)
230230
`,
231+
dedent`
232+
# <picture></picture> Heading Name
233+
[Link](#-heading-name)
234+
`,
235+
dedent`
236+
# Heading Name <picture></picture>
237+
[Link](#heading-name-)
238+
`,
239+
dedent`
240+
# Heading <picture></picture> Name
241+
[Link](#heading--name)
242+
`,
243+
dedent`
244+
# <span>Text</span> Heading Name
245+
[Link](#text-heading-name)
246+
`,
247+
dedent`
248+
# ![alt text](img.png) Heading Name
249+
[Link](#-heading-name)
250+
`,
251+
dedent`
252+
# Heading Name ![alt text](img.png)
253+
[Link](#heading-name-)
254+
`,
255+
{
256+
code: dedent`
257+
# <picture></picture> Heading Name
258+
[Link](#-HEADING-NAME)
259+
`,
260+
options: [{ ignoreCase: true }],
261+
},
231262
],
232263

233264
invalid: [
@@ -480,5 +511,37 @@ ruleTester.run("no-missing-link-fragments", rule, {
480511
},
481512
],
482513
},
514+
{
515+
code: dedent`
516+
# <picture></picture> Heading Name
517+
[Link](#heading-name)
518+
`,
519+
errors: [
520+
{
521+
messageId: "invalidFragment",
522+
data: { fragment: "heading-name" },
523+
line: 2,
524+
column: 1,
525+
endLine: 2,
526+
endColumn: 22,
527+
},
528+
],
529+
},
530+
{
531+
code: dedent`
532+
# ![alt text](img.png) Heading Name
533+
[Link](#heading-name)
534+
`,
535+
errors: [
536+
{
537+
messageId: "invalidFragment",
538+
data: { fragment: "heading-name" },
539+
line: 2,
540+
column: 1,
541+
endLine: 2,
542+
endColumn: 22,
543+
},
544+
],
545+
},
483546
],
484547
});

0 commit comments

Comments
 (0)