mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-16 22:10:13 +01:00
Add style "zero" to MD029/ol-prefix (fixes #140).
This commit is contained in:
parent
2ccacf03f5
commit
ed295cd947
11 changed files with 189 additions and 8 deletions
15
doc/Rules.md
15
doc/Rules.md
|
|
@ -863,11 +863,12 @@ Tags: ol
|
||||||
|
|
||||||
Aliases: ol-prefix
|
Aliases: ol-prefix
|
||||||
|
|
||||||
Parameters: style ("one", "ordered", "one_or_ordered"; default "one_or_ordered")
|
Parameters: style ("one", "ordered", "one_or_ordered", "zero"; default "one_or_ordered")
|
||||||
|
|
||||||
This rule is triggered on ordered lists that do not either start with '1.' or
|
This rule is triggered for ordered lists that do not either start with '1.' or
|
||||||
do not have a prefix that increases in numerical order (depending on the
|
do not have a prefix that increases in numerical order (depending on the
|
||||||
configured style).
|
configured style). The less-common pattern of using '0.' for all prefixes is
|
||||||
|
also supported.
|
||||||
|
|
||||||
Example valid list if the style is configured as 'one':
|
Example valid list if the style is configured as 'one':
|
||||||
|
|
||||||
|
|
@ -887,6 +888,14 @@ Example valid list if the style is configured as 'ordered':
|
||||||
|
|
||||||
Both examples are valid when the style is configured as 'one_or_ordered'.
|
Both examples are valid when the style is configured as 'one_or_ordered'.
|
||||||
|
|
||||||
|
Example valid list if the style is configured as 'zero':
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
0. Do this.
|
||||||
|
0. Do that.
|
||||||
|
0. Done.
|
||||||
|
```
|
||||||
|
|
||||||
Example invalid list for all styles:
|
Example invalid list for all styles:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
|
|
|
||||||
10
lib/md029.js
10
lib/md029.js
|
|
@ -4,6 +4,12 @@
|
||||||
|
|
||||||
const shared = require("./shared");
|
const shared = require("./shared");
|
||||||
|
|
||||||
|
const listStyleExamples = {
|
||||||
|
"one": "1/1/1",
|
||||||
|
"ordered": "1/2/3",
|
||||||
|
"zero": "0/0/0"
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
"names": [ "MD029", "ol-prefix" ],
|
"names": [ "MD029", "ol-prefix" ],
|
||||||
"description": "Ordered list item prefix",
|
"description": "Ordered list item prefix",
|
||||||
|
|
@ -18,12 +24,12 @@ module.exports = {
|
||||||
shared.orderedListItemMarkerRe.exec(list.items[1].line);
|
shared.orderedListItemMarkerRe.exec(list.items[1].line);
|
||||||
listStyle = (second && (second[1] !== "1")) ? "ordered" : "one";
|
listStyle = (second && (second[1] !== "1")) ? "ordered" : "one";
|
||||||
}
|
}
|
||||||
let number = 1;
|
let number = (listStyle === "zero") ? 0 : 1;
|
||||||
list.items.forEach(function forItem(item) {
|
list.items.forEach(function forItem(item) {
|
||||||
const match = shared.orderedListItemMarkerRe.exec(item.line);
|
const match = shared.orderedListItemMarkerRe.exec(item.line);
|
||||||
shared.addErrorDetailIf(onError, item.lineNumber,
|
shared.addErrorDetailIf(onError, item.lineNumber,
|
||||||
String(number), !match || match[1],
|
String(number), !match || match[1],
|
||||||
"Style: " + (listStyle === "one" ? "1/1/1" : "1/2/3"),
|
"Style: " + listStyleExamples[listStyle],
|
||||||
shared.rangeFromRegExp(item.line, shared.listItemMarkerRe));
|
shared.rangeFromRegExp(item.line, shared.listItemMarkerRe));
|
||||||
if (listStyle === "ordered") {
|
if (listStyle === "ordered") {
|
||||||
number++;
|
number++;
|
||||||
|
|
|
||||||
|
|
@ -184,7 +184,8 @@ rules.forEach(function forRule(rule) {
|
||||||
"enum": [
|
"enum": [
|
||||||
"one",
|
"one",
|
||||||
"ordered",
|
"ordered",
|
||||||
"one_or_ordered"
|
"one_or_ordered",
|
||||||
|
"zero"
|
||||||
],
|
],
|
||||||
"default": "one_or_ordered"
|
"default": "one_or_ordered"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -674,7 +674,8 @@
|
||||||
"enum": [
|
"enum": [
|
||||||
"one",
|
"one",
|
||||||
"ordered",
|
"ordered",
|
||||||
"one_or_ordered"
|
"one_or_ordered",
|
||||||
|
"zero"
|
||||||
],
|
],
|
||||||
"default": "one_or_ordered"
|
"default": "one_or_ordered"
|
||||||
}
|
}
|
||||||
|
|
@ -695,7 +696,8 @@
|
||||||
"enum": [
|
"enum": [
|
||||||
"one",
|
"one",
|
||||||
"ordered",
|
"ordered",
|
||||||
"one_or_ordered"
|
"one_or_ordered",
|
||||||
|
"zero"
|
||||||
],
|
],
|
||||||
"default": "one_or_ordered"
|
"default": "one_or_ordered"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
test/detailed-results-ordered-list-item-prefix-single.md
Normal file
3
test/detailed-results-ordered-list-item-prefix-single.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Ordered list examples
|
||||||
|
|
||||||
|
9. Item
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"lineNumber": 3,
|
||||||
|
"ruleNames": [ "MD029", "ol-prefix" ],
|
||||||
|
"ruleDescription": "Ordered list item prefix",
|
||||||
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md029",
|
||||||
|
"errorDetail": "Expected: 1; Actual: 9; Style: 1/1/1",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": [1, 3]
|
||||||
|
}
|
||||||
|
]
|
||||||
6
test/detailed-results-ordered-list-item-prefix-zero.json
Normal file
6
test/detailed-results-ordered-list-item-prefix-zero.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD029": {
|
||||||
|
"style": "zero"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
test/detailed-results-ordered-list-item-prefix-zero.md
Normal file
19
test/detailed-results-ordered-list-item-prefix-zero.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Ordered list examples
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
0. Item
|
||||||
|
0. Item
|
||||||
|
0. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
3. Item
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"lineNumber": 11,
|
||||||
|
"ruleNames": [ "MD029", "ol-prefix" ],
|
||||||
|
"ruleDescription": "Ordered list item prefix",
|
||||||
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md029",
|
||||||
|
"errorDetail": "Expected: 0; Actual: 1; Style: 0/0/0",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": [1, 3]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lineNumber": 12,
|
||||||
|
"ruleNames": [ "MD029", "ol-prefix" ],
|
||||||
|
"ruleDescription": "Ordered list item prefix",
|
||||||
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md029",
|
||||||
|
"errorDetail": "Expected: 0; Actual: 1; Style: 0/0/0",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": [1, 3]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lineNumber": 13,
|
||||||
|
"ruleNames": [ "MD029", "ol-prefix" ],
|
||||||
|
"ruleDescription": "Ordered list item prefix",
|
||||||
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md029",
|
||||||
|
"errorDetail": "Expected: 0; Actual: 1; Style: 0/0/0",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": [1, 3]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lineNumber": 17,
|
||||||
|
"ruleNames": [ "MD029", "ol-prefix" ],
|
||||||
|
"ruleDescription": "Ordered list item prefix",
|
||||||
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md029",
|
||||||
|
"errorDetail": "Expected: 0; Actual: 1; Style: 0/0/0",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": [1, 3]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lineNumber": 18,
|
||||||
|
"ruleNames": [ "MD029", "ol-prefix" ],
|
||||||
|
"ruleDescription": "Ordered list item prefix",
|
||||||
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md029",
|
||||||
|
"errorDetail": "Expected: 0; Actual: 2; Style: 0/0/0",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": [1, 3]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lineNumber": 19,
|
||||||
|
"ruleNames": [ "MD029", "ol-prefix" ],
|
||||||
|
"ruleDescription": "Ordered list item prefix",
|
||||||
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md029",
|
||||||
|
"errorDetail": "Expected: 0; Actual: 3; Style: 0/0/0",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": [1, 3]
|
||||||
|
}
|
||||||
|
]
|
||||||
6
test/ordered-list-item-prefix-zero.json
Normal file
6
test/ordered-list-item-prefix-zero.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD029": {
|
||||||
|
"style": "zero"
|
||||||
|
}
|
||||||
|
}
|
||||||
62
test/ordered-list-item-prefix-zero.md
Normal file
62
test/ordered-list-item-prefix-zero.md
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Ordered list examples
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
0. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
0. Item
|
||||||
|
0. Item
|
||||||
|
0. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item {MD029}
|
||||||
|
2. Item {MD029}
|
||||||
|
3. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
0. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
0. Item
|
||||||
|
2. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
0. Item
|
||||||
|
0. Item
|
||||||
|
2. Item {MD029}
|
||||||
|
0. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item {MD029}
|
||||||
|
2. Item {MD029}
|
||||||
|
3. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
4. Item {MD029}
|
||||||
|
5. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
- Item
|
||||||
|
0. Item
|
||||||
|
0. Item
|
||||||
|
0. Item
|
||||||
|
- Item
|
||||||
|
1. Item {MD029}
|
||||||
|
2. Item {MD029}
|
||||||
|
3. Item {MD029}
|
||||||
|
- Item
|
||||||
|
0. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
2. Item {MD029}
|
||||||
|
- Item
|
||||||
Loading…
Add table
Add a link
Reference in a new issue