Add style "zero" to MD029/ol-prefix (fixes #140).

This commit is contained in:
David Anson 2019-03-06 21:57:19 -08:00
parent 2ccacf03f5
commit ed295cd947
11 changed files with 189 additions and 8 deletions

View file

@ -863,11 +863,12 @@ Tags: ol
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
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':
@ -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'.
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:
```markdown

View file

@ -4,6 +4,12 @@
const shared = require("./shared");
const listStyleExamples = {
"one": "1/1/1",
"ordered": "1/2/3",
"zero": "0/0/0"
};
module.exports = {
"names": [ "MD029", "ol-prefix" ],
"description": "Ordered list item prefix",
@ -18,12 +24,12 @@ module.exports = {
shared.orderedListItemMarkerRe.exec(list.items[1].line);
listStyle = (second && (second[1] !== "1")) ? "ordered" : "one";
}
let number = 1;
let number = (listStyle === "zero") ? 0 : 1;
list.items.forEach(function forItem(item) {
const match = shared.orderedListItemMarkerRe.exec(item.line);
shared.addErrorDetailIf(onError, item.lineNumber,
String(number), !match || match[1],
"Style: " + (listStyle === "one" ? "1/1/1" : "1/2/3"),
"Style: " + listStyleExamples[listStyle],
shared.rangeFromRegExp(item.line, shared.listItemMarkerRe));
if (listStyle === "ordered") {
number++;

View file

@ -184,7 +184,8 @@ rules.forEach(function forRule(rule) {
"enum": [
"one",
"ordered",
"one_or_ordered"
"one_or_ordered",
"zero"
],
"default": "one_or_ordered"
}

View file

@ -674,7 +674,8 @@
"enum": [
"one",
"ordered",
"one_or_ordered"
"one_or_ordered",
"zero"
],
"default": "one_or_ordered"
}
@ -695,7 +696,8 @@
"enum": [
"one",
"ordered",
"one_or_ordered"
"one_or_ordered",
"zero"
],
"default": "one_or_ordered"
}

View file

@ -0,0 +1,3 @@
# Ordered list examples
9. Item

View file

@ -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]
}
]

View file

@ -0,0 +1,6 @@
{
"default": true,
"MD029": {
"style": "zero"
}
}

View 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

View file

@ -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]
}
]

View file

@ -0,0 +1,6 @@
{
"default": true,
"MD029": {
"style": "zero"
}
}

View 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