mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-16 22:10:13 +01:00
Add style one_or_ordered to MD029/ol-prefix (fixes #97).
This commit is contained in:
parent
4345423be1
commit
39d39db961
14 changed files with 242 additions and 15 deletions
11
doc/Rules.md
11
doc/Rules.md
|
|
@ -717,11 +717,11 @@ Tags: ol
|
||||||
|
|
||||||
Aliases: ol-prefix
|
Aliases: ol-prefix
|
||||||
|
|
||||||
Parameters: style ("one", "ordered"; default "one")
|
Parameters: style ("one", "ordered", "one_or_ordered"; default "one_or_ordered")
|
||||||
|
|
||||||
This rule is triggered on ordered lists that do not either start with '1.' or
|
This rule is triggered on 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, which defaults to 'one').
|
configured style).
|
||||||
|
|
||||||
Example valid list if the style is configured as 'one':
|
Example valid list if the style is configured as 'one':
|
||||||
|
|
||||||
|
|
@ -735,6 +735,13 @@ Example valid list if the style is configured as 'ordered':
|
||||||
2. Do that.
|
2. Do that.
|
||||||
3. Done.
|
3. Done.
|
||||||
|
|
||||||
|
Both examples are valid when the style is configured as 'one_or_ordered'.
|
||||||
|
|
||||||
|
Example invalid list for all styles:
|
||||||
|
|
||||||
|
1. Do this.
|
||||||
|
3. Done.
|
||||||
|
|
||||||
<a name="md030"></a>
|
<a name="md030"></a>
|
||||||
|
|
||||||
## MD030 - Spaces after list markers
|
## MD030 - Spaces after list markers
|
||||||
|
|
|
||||||
15
lib/rules.js
15
lib/rules.js
|
|
@ -745,16 +745,23 @@ module.exports = [
|
||||||
"aliases": [ "ol-prefix" ],
|
"aliases": [ "ol-prefix" ],
|
||||||
"regexp": listItemMarkerRe,
|
"regexp": listItemMarkerRe,
|
||||||
"func": function MD029(params, errors) {
|
"func": function MD029(params, errors) {
|
||||||
var style = params.options.style || "one";
|
var style = params.options.style || "one_or_ordered";
|
||||||
|
var numberRe = /^[\s>]*([^.)]*)[.)]/;
|
||||||
flattenLists(params).forEach(function forList(list) {
|
flattenLists(params).forEach(function forList(list) {
|
||||||
if (!list.unordered) {
|
if (!list.unordered) {
|
||||||
|
var listStyle = style;
|
||||||
|
if (listStyle === "one_or_ordered") {
|
||||||
|
var second = (list.items.length > 1) &&
|
||||||
|
numberRe.exec(list.items[1].line);
|
||||||
|
listStyle = (second && (second[1] !== "1")) ? "ordered" : "one";
|
||||||
|
}
|
||||||
var number = 1;
|
var number = 1;
|
||||||
list.items.forEach(function forItem(item) {
|
list.items.forEach(function forItem(item) {
|
||||||
var match = /^[\s>]*([^.)]*)[.)]/.exec(item.line);
|
var match = numberRe.exec(item.line);
|
||||||
errors.addDetailIf(item.lineNumber,
|
errors.addDetailIf(item.lineNumber,
|
||||||
String(number), !match || match[1],
|
String(number), !match || match[1],
|
||||||
"Style: " + (style === "one" ? "1/1/1" : "1/2/3"));
|
"Style: " + (listStyle === "one" ? "1/1/1" : "1/2/3"));
|
||||||
if (style === "ordered") {
|
if (listStyle === "ordered") {
|
||||||
number++;
|
number++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -163,9 +163,10 @@ rules.forEach(function forRule(rule) {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
"one",
|
"one",
|
||||||
"ordered"
|
"ordered",
|
||||||
|
"one_or_ordered"
|
||||||
],
|
],
|
||||||
"default": "one"
|
"default": "one_or_ordered"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -555,9 +555,10 @@
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
"one",
|
"one",
|
||||||
"ordered"
|
"ordered",
|
||||||
|
"one_or_ordered"
|
||||||
],
|
],
|
||||||
"default": "one"
|
"default": "one_or_ordered"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
|
@ -575,9 +576,10 @@
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
"one",
|
"one",
|
||||||
"ordered"
|
"ordered",
|
||||||
|
"one_or_ordered"
|
||||||
],
|
],
|
||||||
"default": "one"
|
"default": "one_or_ordered"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ Note: Can not break MD025 and MD002 in the same file
|
||||||
> {MD028:43}
|
> {MD028:43}
|
||||||
|
|
||||||
1. list
|
1. list
|
||||||
2. list {MD029}
|
3. list {MD029}
|
||||||
|
|
||||||
```js
|
```js
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Text
|
||||||
> Blank line above
|
> Blank line above
|
||||||
|
|
||||||
1. Alpha
|
1. Alpha
|
||||||
2. Beta
|
3. Beta
|
||||||
|
|
||||||
> > Multiple spaces, multiple blockquotes
|
> > Multiple spaces, multiple blockquotes
|
||||||
> >
|
> >
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
"ruleName": "MD029",
|
"ruleName": "MD029",
|
||||||
"ruleAlias": "ol-prefix",
|
"ruleAlias": "ol-prefix",
|
||||||
"ruleDescription": "Ordered list item prefix",
|
"ruleDescription": "Ordered list item prefix",
|
||||||
"errorDetail": "Expected: 1; Actual: 2; Style: 1/1/1",
|
"errorDetail": "Expected: 2; Actual: 3; Style: 1/2/3",
|
||||||
"errorContext": null,
|
"errorContext": null,
|
||||||
"errorRange": [1, 4]
|
"errorRange": [1, 4]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
6
test/ordered-list-item-prefix-one.json
Normal file
6
test/ordered-list-item-prefix-one.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD029": {
|
||||||
|
"style": "one"
|
||||||
|
}
|
||||||
|
}
|
||||||
62
test/ordered-list-item-prefix-one.md
Normal file
62
test/ordered-list-item-prefix-one.md
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Ordered list examples
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
2. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item {MD029}
|
||||||
|
3. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item {MD029}
|
||||||
|
1. Item
|
||||||
|
4. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
3. Item {MD029}
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item {MD029}
|
||||||
|
3. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
4. Item {MD029}
|
||||||
|
5. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
2. Item {MD029}
|
||||||
|
3. Item {MD029}
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
2. Item {MD029}
|
||||||
|
4. Item {MD029}
|
||||||
|
- Item
|
||||||
62
test/ordered-list-item-prefix-one_or_ordered.md
Normal file
62
test/ordered-list-item-prefix-one_or_ordered.md
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Ordered list examples
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
2. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
3. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
4. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
3. Item {MD029}
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
3. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
4. Item {MD029}
|
||||||
|
5. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
1. Item
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
3. Item
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
4. Item {MD029}
|
||||||
|
- Item
|
||||||
6
test/ordered-list-item-prefix-ordered.json
Normal file
6
test/ordered-list-item-prefix-ordered.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD029": {
|
||||||
|
"style": "ordered"
|
||||||
|
}
|
||||||
|
}
|
||||||
62
test/ordered-list-item-prefix-ordered.md
Normal file
62
test/ordered-list-item-prefix-ordered.md
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Ordered list examples
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
2. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
1. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
3. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
4. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
3. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
3. Item
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
4. Item {MD029}
|
||||||
|
5. Item {MD029}
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
1. Item {MD029}
|
||||||
|
1. Item {MD029}
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
3. Item
|
||||||
|
- Item
|
||||||
|
1. Item
|
||||||
|
2. Item
|
||||||
|
4. Item {MD029}
|
||||||
|
- Item
|
||||||
6
test/ordered_list_item_prefix-paren.json
Normal file
6
test/ordered_list_item_prefix-paren.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD029": {
|
||||||
|
"style": "one"
|
||||||
|
}
|
||||||
|
}
|
||||||
6
test/ordered_list_item_prefix.json
Normal file
6
test/ordered_list_item_prefix.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD029": {
|
||||||
|
"style": "one"
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue