mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-21 21:30:47 +02:00
Update MD052/reference-links-images to add ignored_labels parameter and default to ignoring GFM task list items (fixes #1524).
This commit is contained in:
parent
c413ac9a88
commit
328506e6c8
19 changed files with 357 additions and 12 deletions
|
@ -28,3 +28,14 @@ so "shortcut" syntax is ignored by default. To include "shortcut" syntax, set
|
|||
the `include_shortcut` parameter to `true`. Note that doing so produces warnings
|
||||
for *all* text in the document that *could* be a shortcut. If bracketed text is
|
||||
intentional, brackets can be escaped with the `\` character: `\[example\]`.
|
||||
|
||||
If there are link labels that are deliberately unreferenced, they can be ignored
|
||||
by setting the `ignored_labels` parameter to the list of strings to ignore. The
|
||||
default value of this parameter ignores the checkbox syntax used by
|
||||
[GitHub Flavored Markdown task list items][gfm-tasklist]:
|
||||
|
||||
```markdown
|
||||
- [x] Checked task list item
|
||||
```
|
||||
|
||||
[gfm-tasklist]: https://github.github.com/gfm/#task-list-items-extension-
|
||||
|
|
|
@ -17,9 +17,9 @@ reference has the corresponding label. The "full", "collapsed", and "shortcut"
|
|||
formats are all supported.
|
||||
|
||||
If there are reference definitions that are deliberately unreferenced, they can
|
||||
be ignored by setting the `ignored_definitions` parameter. The default value of
|
||||
this parameter ignores the following convention for adding non-HTML comments to
|
||||
Markdown:
|
||||
be ignored by setting the `ignored_definitions` parameter to the list of strings
|
||||
to ignore. The default value of this parameter ignores the following convention
|
||||
for adding non-HTML comments to Markdown:
|
||||
|
||||
```markdown
|
||||
[//]: # (This behaves like a comment)
|
||||
|
|
18
doc/Rules.md
18
doc/Rules.md
|
@ -2278,6 +2278,7 @@ Aliases: `reference-links-images`
|
|||
|
||||
Parameters:
|
||||
|
||||
- `ignored_labels`: Ignored link labels (`string[]`, default `["x"]`)
|
||||
- `shortcut_syntax`: Include shortcut syntax (`boolean`, default `false`)
|
||||
|
||||
Links and images in Markdown can provide the link destination or image source
|
||||
|
@ -2311,6 +2312,17 @@ the `include_shortcut` parameter to `true`. Note that doing so produces warnings
|
|||
for *all* text in the document that *could* be a shortcut. If bracketed text is
|
||||
intentional, brackets can be escaped with the `\` character: `\[example\]`.
|
||||
|
||||
If there are link labels that are deliberately unreferenced, they can be ignored
|
||||
by setting the `ignored_labels` parameter to the list of strings to ignore. The
|
||||
default value of this parameter ignores the checkbox syntax used by
|
||||
[GitHub Flavored Markdown task list items][gfm-tasklist]:
|
||||
|
||||
```markdown
|
||||
- [x] Checked task list item
|
||||
```
|
||||
|
||||
[gfm-tasklist]: https://github.github.com/gfm/#task-list-items-extension-
|
||||
|
||||
<a name="md053"></a>
|
||||
|
||||
## `MD053` - Link and image reference definitions should be needed
|
||||
|
@ -2344,9 +2356,9 @@ reference has the corresponding label. The "full", "collapsed", and "shortcut"
|
|||
formats are all supported.
|
||||
|
||||
If there are reference definitions that are deliberately unreferenced, they can
|
||||
be ignored by setting the `ignored_definitions` parameter. The default value of
|
||||
this parameter ignores the following convention for adding non-HTML comments to
|
||||
Markdown:
|
||||
be ignored by setting the `ignored_definitions` parameter to the list of strings
|
||||
to ignore. The default value of this parameter ignores the following convention
|
||||
for adding non-HTML comments to Markdown:
|
||||
|
||||
```markdown
|
||||
[//]: # (This behaves like a comment)
|
||||
|
|
12
doc/md052.md
12
doc/md052.md
|
@ -6,6 +6,7 @@ Aliases: `reference-links-images`
|
|||
|
||||
Parameters:
|
||||
|
||||
- `ignored_labels`: Ignored link labels (`string[]`, default `["x"]`)
|
||||
- `shortcut_syntax`: Include shortcut syntax (`boolean`, default `false`)
|
||||
|
||||
Links and images in Markdown can provide the link destination or image source
|
||||
|
@ -38,3 +39,14 @@ so "shortcut" syntax is ignored by default. To include "shortcut" syntax, set
|
|||
the `include_shortcut` parameter to `true`. Note that doing so produces warnings
|
||||
for *all* text in the document that *could* be a shortcut. If bracketed text is
|
||||
intentional, brackets can be escaped with the `\` character: `\[example\]`.
|
||||
|
||||
If there are link labels that are deliberately unreferenced, they can be ignored
|
||||
by setting the `ignored_labels` parameter to the list of strings to ignore. The
|
||||
default value of this parameter ignores the checkbox syntax used by
|
||||
[GitHub Flavored Markdown task list items][gfm-tasklist]:
|
||||
|
||||
```markdown
|
||||
- [x] Checked task list item
|
||||
```
|
||||
|
||||
[gfm-tasklist]: https://github.github.com/gfm/#task-list-items-extension-
|
||||
|
|
|
@ -29,9 +29,9 @@ reference has the corresponding label. The "full", "collapsed", and "shortcut"
|
|||
formats are all supported.
|
||||
|
||||
If there are reference definitions that are deliberately unreferenced, they can
|
||||
be ignored by setting the `ignored_definitions` parameter. The default value of
|
||||
this parameter ignores the following convention for adding non-HTML comments to
|
||||
Markdown:
|
||||
be ignored by setting the `ignored_definitions` parameter to the list of strings
|
||||
to ignore. The default value of this parameter ignores the following convention
|
||||
for adding non-HTML comments to Markdown:
|
||||
|
||||
```markdown
|
||||
[//]: # (This behaves like a comment)
|
||||
|
|
8
lib/configuration-strict.d.ts
vendored
8
lib/configuration-strict.d.ts
vendored
|
@ -996,6 +996,10 @@ export interface ConfigurationStrict {
|
|||
MD052?:
|
||||
| boolean
|
||||
| {
|
||||
/**
|
||||
* Ignored link labels
|
||||
*/
|
||||
ignored_labels?: string[];
|
||||
/**
|
||||
* Include shortcut syntax
|
||||
*/
|
||||
|
@ -1007,6 +1011,10 @@ export interface ConfigurationStrict {
|
|||
"reference-links-images"?:
|
||||
| boolean
|
||||
| {
|
||||
/**
|
||||
* Ignored link labels
|
||||
*/
|
||||
ignored_labels?: string[];
|
||||
/**
|
||||
* Include shortcut syntax
|
||||
*/
|
||||
|
|
|
@ -13,6 +13,7 @@ export default {
|
|||
"function": function MD052(params, onError) {
|
||||
const { config, lines } = params;
|
||||
const shortcutSyntax = config.shortcut_syntax || false;
|
||||
const ignoredLabels = new Set(config.ignored_labels || [ "x" ]);
|
||||
const { definitions, references, shortcuts } = getReferenceLinkImageData();
|
||||
const entries = shortcutSyntax ?
|
||||
[ ...references.entries(), ...shortcuts.entries() ] :
|
||||
|
@ -20,7 +21,7 @@ export default {
|
|||
// Look for links/images that use an undefined link reference
|
||||
for (const reference of entries) {
|
||||
const [ label, datas ] = reference;
|
||||
if (!definitions.has(label)) {
|
||||
if (!definitions.has(label) && !ignoredLabels.has(label)) {
|
||||
for (const data of datas) {
|
||||
const [ lineIndex, index, length ] = data;
|
||||
// Context will be incomplete if reporting for a multi-line link
|
||||
|
|
|
@ -275,6 +275,10 @@
|
|||
|
||||
// MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md052.md
|
||||
"MD052": {
|
||||
// Ignored link labels
|
||||
"ignored_labels": [
|
||||
"x"
|
||||
],
|
||||
// Include shortcut syntax
|
||||
"shortcut_syntax": false
|
||||
},
|
||||
|
|
|
@ -247,6 +247,9 @@ MD051:
|
|||
|
||||
# MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md052.md
|
||||
MD052:
|
||||
# Ignored link labels
|
||||
ignored_labels:
|
||||
- "x"
|
||||
# Include shortcut syntax
|
||||
shortcut_syntax: false
|
||||
|
||||
|
|
|
@ -493,6 +493,14 @@ for (const rule of rules) {
|
|||
break;
|
||||
case "MD052":
|
||||
scheme.properties = {
|
||||
"ignored_labels": {
|
||||
"description": "Ignored link labels",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": [ "x" ]
|
||||
},
|
||||
"shortcut_syntax": {
|
||||
"description": "Include shortcut syntax",
|
||||
"type": "boolean",
|
||||
|
|
|
@ -1549,6 +1549,16 @@
|
|||
],
|
||||
"default": true,
|
||||
"properties": {
|
||||
"ignored_labels": {
|
||||
"description": "Ignored link labels",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": [
|
||||
"x"
|
||||
]
|
||||
},
|
||||
"shortcut_syntax": {
|
||||
"description": "Include shortcut syntax",
|
||||
"type": "boolean",
|
||||
|
@ -1565,6 +1575,16 @@
|
|||
],
|
||||
"default": true,
|
||||
"properties": {
|
||||
"ignored_labels": {
|
||||
"description": "Ignored link labels",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": [
|
||||
"x"
|
||||
]
|
||||
},
|
||||
"shortcut_syntax": {
|
||||
"description": "Include shortcut syntax",
|
||||
"type": "boolean",
|
||||
|
|
|
@ -1549,6 +1549,16 @@
|
|||
],
|
||||
"default": true,
|
||||
"properties": {
|
||||
"ignored_labels": {
|
||||
"description": "Ignored link labels",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": [
|
||||
"x"
|
||||
]
|
||||
},
|
||||
"shortcut_syntax": {
|
||||
"description": "Include shortcut syntax",
|
||||
"type": "boolean",
|
||||
|
@ -1565,6 +1575,16 @@
|
|||
],
|
||||
"default": true,
|
||||
"properties": {
|
||||
"ignored_labels": {
|
||||
"description": "Ignored link labels",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": [
|
||||
"x"
|
||||
]
|
||||
},
|
||||
"shortcut_syntax": {
|
||||
"description": "Include shortcut syntax",
|
||||
"type": "boolean",
|
||||
|
|
|
@ -908,7 +908,7 @@ test("readme", async(t) => {
|
|||
});
|
||||
|
||||
test("validateJsonUsingConfigSchemaStrict", async(t) => {
|
||||
t.plan(199);
|
||||
t.plan(201);
|
||||
// @ts-ignore
|
||||
const ajv = new Ajv(ajvOptions);
|
||||
const validateSchemaStrict = ajv.compile(configSchemaStrict);
|
||||
|
|
19
test/reference-links-and-images-ignored-labels-empty.md
Normal file
19
test/reference-links-and-images-ignored-labels-empty.md
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Reference Links and Images (Ignored Labels Empty)
|
||||
|
||||
[full][full] {MD052}
|
||||
|
||||
[collapsed][] {MD052}
|
||||
|
||||
[shortcut] {MD052}
|
||||
|
||||
[invalid][invalid] {MD052}
|
||||
|
||||
- [ ] Unchecked task list item
|
||||
- [x] Checked task list item {MD052}
|
||||
|
||||
<!-- markdownlint-configure-file {
|
||||
"reference-links-images": {
|
||||
"ignored_labels": [],
|
||||
"shortcut_syntax": true
|
||||
}
|
||||
} -->
|
23
test/reference-links-and-images-ignored-labels.md
Normal file
23
test/reference-links-and-images-ignored-labels.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Reference Links and Images (Ignored Labels)
|
||||
|
||||
[full][full]
|
||||
|
||||
[collapsed][]
|
||||
|
||||
[shortcut]
|
||||
|
||||
[invalid][invalid] {MD052}
|
||||
|
||||
- [ ] Unchecked task list item
|
||||
- [x] Checked task list item {MD052}
|
||||
|
||||
<!-- markdownlint-configure-file {
|
||||
"reference-links-images": {
|
||||
"ignored_labels": [
|
||||
"full",
|
||||
"collapsed",
|
||||
"shortcut"
|
||||
],
|
||||
"shortcut_syntax": true
|
||||
}
|
||||
} -->
|
|
@ -84,6 +84,16 @@ Footnote[^1]
|
|||
|
||||
Missing[^2] {MD052}
|
||||
|
||||
## GitHub Flavored Markdown Task List Items
|
||||
|
||||
- [ ] Unchecked task list item
|
||||
- [x] Checked task list item
|
||||
|
||||
- [x] alpha
|
||||
- [ ] beta
|
||||
- [x] charlie
|
||||
- [ ] delta
|
||||
|
||||
## Valid Labels
|
||||
|
||||
[label]: https://example.com/label
|
||||
|
|
|
@ -242,3 +242,8 @@ Text with a [^footnote] in it
|
|||
[^footnote]: Footnote with an [embedded-reference][] in it
|
||||
|
||||
[embedded-reference]: https://example.com/embedded-reference
|
||||
|
||||
## GitHub Flavored Markdown Task List Items
|
||||
|
||||
- [ ] Unchecked task list item
|
||||
- [x] Checked task list item
|
||||
|
|
|
@ -47639,6 +47639,180 @@ Generated by [AVA](https://avajs.dev).
|
|||
`,
|
||||
}
|
||||
|
||||
## reference-links-and-images-ignored-labels-empty.md
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
{
|
||||
errors: [
|
||||
{
|
||||
errorContext: '[full][full]',
|
||||
errorDetail: 'Missing link or image reference definition: "full"',
|
||||
errorRange: [
|
||||
1,
|
||||
12,
|
||||
],
|
||||
fixInfo: null,
|
||||
lineNumber: 3,
|
||||
ruleDescription: 'Reference links and images should use a label that is defined',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md052.md',
|
||||
ruleNames: [
|
||||
'MD052',
|
||||
'reference-links-images',
|
||||
],
|
||||
},
|
||||
{
|
||||
errorContext: '[collapsed][]',
|
||||
errorDetail: 'Missing link or image reference definition: "collapsed"',
|
||||
errorRange: [
|
||||
1,
|
||||
13,
|
||||
],
|
||||
fixInfo: null,
|
||||
lineNumber: 5,
|
||||
ruleDescription: 'Reference links and images should use a label that is defined',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md052.md',
|
||||
ruleNames: [
|
||||
'MD052',
|
||||
'reference-links-images',
|
||||
],
|
||||
},
|
||||
{
|
||||
errorContext: '[shortcut]',
|
||||
errorDetail: 'Missing link or image reference definition: "shortcut"',
|
||||
errorRange: [
|
||||
1,
|
||||
10,
|
||||
],
|
||||
fixInfo: null,
|
||||
lineNumber: 7,
|
||||
ruleDescription: 'Reference links and images should use a label that is defined',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md052.md',
|
||||
ruleNames: [
|
||||
'MD052',
|
||||
'reference-links-images',
|
||||
],
|
||||
},
|
||||
{
|
||||
errorContext: '[invalid][invalid]',
|
||||
errorDetail: 'Missing link or image reference definition: "invalid"',
|
||||
errorRange: [
|
||||
1,
|
||||
18,
|
||||
],
|
||||
fixInfo: null,
|
||||
lineNumber: 9,
|
||||
ruleDescription: 'Reference links and images should use a label that is defined',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md052.md',
|
||||
ruleNames: [
|
||||
'MD052',
|
||||
'reference-links-images',
|
||||
],
|
||||
},
|
||||
{
|
||||
errorContext: '[x]',
|
||||
errorDetail: 'Missing link or image reference definition: "x"',
|
||||
errorRange: [
|
||||
3,
|
||||
3,
|
||||
],
|
||||
fixInfo: null,
|
||||
lineNumber: 12,
|
||||
ruleDescription: 'Reference links and images should use a label that is defined',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md052.md',
|
||||
ruleNames: [
|
||||
'MD052',
|
||||
'reference-links-images',
|
||||
],
|
||||
},
|
||||
],
|
||||
fixed: `# Reference Links and Images (Ignored Labels Empty)␊
|
||||
␊
|
||||
[full][full] {MD052}␊
|
||||
␊
|
||||
[collapsed][] {MD052}␊
|
||||
␊
|
||||
[shortcut] {MD052}␊
|
||||
␊
|
||||
[invalid][invalid] {MD052}␊
|
||||
␊
|
||||
- [ ] Unchecked task list item␊
|
||||
- [x] Checked task list item {MD052}␊
|
||||
␊
|
||||
<!-- markdownlint-configure-file {␊
|
||||
"reference-links-images": {␊
|
||||
"ignored_labels": [],␊
|
||||
"shortcut_syntax": true␊
|
||||
}␊
|
||||
} -->␊
|
||||
`,
|
||||
}
|
||||
|
||||
## reference-links-and-images-ignored-labels.md
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
{
|
||||
errors: [
|
||||
{
|
||||
errorContext: '[invalid][invalid]',
|
||||
errorDetail: 'Missing link or image reference definition: "invalid"',
|
||||
errorRange: [
|
||||
1,
|
||||
18,
|
||||
],
|
||||
fixInfo: null,
|
||||
lineNumber: 9,
|
||||
ruleDescription: 'Reference links and images should use a label that is defined',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md052.md',
|
||||
ruleNames: [
|
||||
'MD052',
|
||||
'reference-links-images',
|
||||
],
|
||||
},
|
||||
{
|
||||
errorContext: '[x]',
|
||||
errorDetail: 'Missing link or image reference definition: "x"',
|
||||
errorRange: [
|
||||
3,
|
||||
3,
|
||||
],
|
||||
fixInfo: null,
|
||||
lineNumber: 12,
|
||||
ruleDescription: 'Reference links and images should use a label that is defined',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md052.md',
|
||||
ruleNames: [
|
||||
'MD052',
|
||||
'reference-links-images',
|
||||
],
|
||||
},
|
||||
],
|
||||
fixed: `# Reference Links and Images (Ignored Labels)␊
|
||||
␊
|
||||
[full][full]␊
|
||||
␊
|
||||
[collapsed][]␊
|
||||
␊
|
||||
[shortcut]␊
|
||||
␊
|
||||
[invalid][invalid] {MD052}␊
|
||||
␊
|
||||
- [ ] Unchecked task list item␊
|
||||
- [x] Checked task list item {MD052}␊
|
||||
␊
|
||||
<!-- markdownlint-configure-file {␊
|
||||
"reference-links-images": {␊
|
||||
"ignored_labels": [␊
|
||||
"full",␊
|
||||
"collapsed",␊
|
||||
"shortcut"␊
|
||||
],␊
|
||||
"shortcut_syntax": true␊
|
||||
}␊
|
||||
} -->␊
|
||||
`,
|
||||
}
|
||||
|
||||
## reference-links-and-images-shortcuts.md
|
||||
|
||||
> Snapshot 1
|
||||
|
@ -47657,7 +47831,7 @@ Generated by [AVA](https://avajs.dev).
|
|||
editColumn: 7,
|
||||
insertText: '<https://example.com/footnote>',
|
||||
},
|
||||
lineNumber: 106,
|
||||
lineNumber: 116,
|
||||
ruleDescription: 'Bare URL used',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md034.md',
|
||||
ruleNames: [
|
||||
|
@ -47848,6 +48022,16 @@ Generated by [AVA](https://avajs.dev).
|
|||
␊
|
||||
Missing[^2] {MD052}␊
|
||||
␊
|
||||
## GitHub Flavored Markdown Task List Items␊
|
||||
␊
|
||||
- [ ] Unchecked task list item␊
|
||||
- [x] Checked task list item␊
|
||||
␊
|
||||
- [x] alpha␊
|
||||
- [ ] beta␊
|
||||
- [x] charlie␊
|
||||
- [ ] delta␊
|
||||
␊
|
||||
## Valid Labels␊
|
||||
␊
|
||||
[label]: https://example.com/label␊
|
||||
|
@ -48359,6 +48543,11 @@ Generated by [AVA](https://avajs.dev).
|
|||
[^footnote]: Footnote with an [embedded-reference][] in it␊
|
||||
␊
|
||||
[embedded-reference]: https://example.com/embedded-reference␊
|
||||
␊
|
||||
## GitHub Flavored Markdown Task List Items␊
|
||||
␊
|
||||
- [ ] Unchecked task list item␊
|
||||
- [x] Checked task list item␊
|
||||
`,
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue