mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-16 14:00:13 +01:00
Add MD004 with tests, support disabling rules.
This commit is contained in:
parent
d2e38c1646
commit
2da9462e45
13 changed files with 201 additions and 7 deletions
|
|
@ -91,7 +91,7 @@
|
|||
"no-throw-literal": 2,
|
||||
"no-undef": 2,
|
||||
"no-undef-init": 2,
|
||||
"no-undefined": 2,
|
||||
"no-undefined": 0,
|
||||
"no-underscore-dangle": 2,
|
||||
"no-unreachable": 2,
|
||||
"no-unused-expressions": 2,
|
||||
|
|
|
|||
|
|
@ -24,12 +24,14 @@ function lintFile(file, config, callback) {
|
|||
var result = {};
|
||||
rules.forEach(function forRule(rule) {
|
||||
var ruleConfig = config[rule.name];
|
||||
params.options = (ruleConfig instanceof Object) ? ruleConfig : {};
|
||||
var errors = [];
|
||||
rule.func(params, errors);
|
||||
if (errors.length) {
|
||||
errors.sort(numberComparison);
|
||||
result[rule.name] = errors.filter(uniqueFilterForSorted);
|
||||
if ((ruleConfig === undefined) || ruleConfig) {
|
||||
params.options = (ruleConfig instanceof Object) ? ruleConfig : {};
|
||||
var errors = [];
|
||||
rule.func(params, errors);
|
||||
if (errors.length) {
|
||||
errors.sort(numberComparison);
|
||||
result[rule.name] = errors.filter(uniqueFilterForSorted);
|
||||
}
|
||||
}
|
||||
});
|
||||
callback(null, result);
|
||||
|
|
|
|||
32
lib/rules.js
32
lib/rules.js
|
|
@ -14,6 +14,19 @@ function headingStyleFrom(token, lines) {
|
|||
return "setext";
|
||||
}
|
||||
|
||||
function unorderedListStyleFrom(token, lines) {
|
||||
switch (lines[token.lines[0]].trim().substr(0, 1)) {
|
||||
case "*":
|
||||
return "asterisk";
|
||||
case "-":
|
||||
return "dash";
|
||||
case "+":
|
||||
return "plus";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function padAndTrim(lines) {
|
||||
return [].concat(
|
||||
"",
|
||||
|
|
@ -75,6 +88,25 @@ module.exports = [
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "MD004",
|
||||
"desc": "Unordered list style",
|
||||
"func": function MD004(params, errors) {
|
||||
var style = params.options.style || "consistent";
|
||||
var listItems = params.tokens.filter(function filterToken(token) {
|
||||
return (token.type === "list_item_open");
|
||||
});
|
||||
if ((style === "consistent") && listItems.length) {
|
||||
style = unorderedListStyleFrom(listItems[0], params.lines);
|
||||
}
|
||||
listItems.forEach(function forToken(token) {
|
||||
if (unorderedListStyleFrom(token, params.lines) !== style) {
|
||||
errors.push(lineNumberFrom(token));
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "MD031",
|
||||
"desc": "Fenced code blocks should be surrounded by blank lines",
|
||||
|
|
|
|||
3
test/inconsistent_bullet_styles_asterisk.md
Normal file
3
test/inconsistent_bullet_styles_asterisk.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
* Item
|
||||
+ Item {MD004}
|
||||
- Item {MD004}
|
||||
3
test/inconsistent_bullet_styles_dash.md
Normal file
3
test/inconsistent_bullet_styles_dash.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
- Item
|
||||
* Item {MD004}
|
||||
+ Item {MD004}
|
||||
3
test/inconsistent_bullet_styles_plus.md
Normal file
3
test/inconsistent_bullet_styles_plus.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
+ Item
|
||||
* Item {MD004}
|
||||
- Item {MD004}
|
||||
36
test/incorrect_bullet_style_asterisk.json
Normal file
36
test/incorrect_bullet_style_asterisk.json
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"MD001": true,
|
||||
"MD002": true,
|
||||
"MD003": true,
|
||||
"MD004": {
|
||||
"style": "asterisk"
|
||||
},
|
||||
"MD005": true,
|
||||
"MD006": true,
|
||||
"MD007": true,
|
||||
"MD008": true,
|
||||
"MD009": true,
|
||||
"MD010": true,
|
||||
"MD011": true,
|
||||
"MD012": true,
|
||||
"MD013": true,
|
||||
"MD014": true,
|
||||
"MD015": true,
|
||||
"MD016": true,
|
||||
"MD017": true,
|
||||
"MD018": true,
|
||||
"MD019": true,
|
||||
"MD020": true,
|
||||
"MD021": true,
|
||||
"MD022": true,
|
||||
"MD023": true,
|
||||
"MD024": true,
|
||||
"MD025": true,
|
||||
"MD026": true,
|
||||
"MD027": true,
|
||||
"MD028": true,
|
||||
"MD029": true,
|
||||
"MD030": true,
|
||||
"MD031": true,
|
||||
"MD032": true
|
||||
}
|
||||
3
test/incorrect_bullet_style_asterisk.md
Normal file
3
test/incorrect_bullet_style_asterisk.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
* Item
|
||||
- Item {MD004}
|
||||
+ Item {MD004}
|
||||
36
test/incorrect_bullet_style_dash.json
Normal file
36
test/incorrect_bullet_style_dash.json
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"MD001": true,
|
||||
"MD002": true,
|
||||
"MD003": true,
|
||||
"MD004": {
|
||||
"style": "dash"
|
||||
},
|
||||
"MD005": true,
|
||||
"MD006": true,
|
||||
"MD007": true,
|
||||
"MD008": true,
|
||||
"MD009": true,
|
||||
"MD010": true,
|
||||
"MD011": true,
|
||||
"MD012": true,
|
||||
"MD013": true,
|
||||
"MD014": true,
|
||||
"MD015": true,
|
||||
"MD016": true,
|
||||
"MD017": true,
|
||||
"MD018": true,
|
||||
"MD019": true,
|
||||
"MD020": true,
|
||||
"MD021": true,
|
||||
"MD022": true,
|
||||
"MD023": true,
|
||||
"MD024": true,
|
||||
"MD025": true,
|
||||
"MD026": true,
|
||||
"MD027": true,
|
||||
"MD028": true,
|
||||
"MD029": true,
|
||||
"MD030": true,
|
||||
"MD031": true,
|
||||
"MD032": true
|
||||
}
|
||||
3
test/incorrect_bullet_style_dash.md
Normal file
3
test/incorrect_bullet_style_dash.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
* Item {MD004}
|
||||
- Item
|
||||
+ Item {MD004}
|
||||
36
test/incorrect_bullet_style_plus.json
Normal file
36
test/incorrect_bullet_style_plus.json
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"MD001": true,
|
||||
"MD002": true,
|
||||
"MD003": true,
|
||||
"MD004": {
|
||||
"style": "plus"
|
||||
},
|
||||
"MD005": true,
|
||||
"MD006": true,
|
||||
"MD007": true,
|
||||
"MD008": true,
|
||||
"MD009": true,
|
||||
"MD010": true,
|
||||
"MD011": true,
|
||||
"MD012": true,
|
||||
"MD013": true,
|
||||
"MD014": true,
|
||||
"MD015": true,
|
||||
"MD016": true,
|
||||
"MD017": true,
|
||||
"MD018": true,
|
||||
"MD019": true,
|
||||
"MD020": true,
|
||||
"MD021": true,
|
||||
"MD022": true,
|
||||
"MD023": true,
|
||||
"MD024": true,
|
||||
"MD025": true,
|
||||
"MD026": true,
|
||||
"MD027": true,
|
||||
"MD028": true,
|
||||
"MD029": true,
|
||||
"MD030": true,
|
||||
"MD031": true,
|
||||
"MD032": true
|
||||
}
|
||||
3
test/incorrect_bullet_style_plus.md
Normal file
3
test/incorrect_bullet_style_plus.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
* Item {MD004}
|
||||
- Item {MD004}
|
||||
+ Item
|
||||
34
test/lists_without_blank_lines.json
Normal file
34
test/lists_without_blank_lines.json
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"MD001": true,
|
||||
"MD002": true,
|
||||
"MD003": true,
|
||||
"MD004": false,
|
||||
"MD005": true,
|
||||
"MD006": true,
|
||||
"MD007": true,
|
||||
"MD008": true,
|
||||
"MD009": true,
|
||||
"MD010": true,
|
||||
"MD011": true,
|
||||
"MD012": true,
|
||||
"MD013": true,
|
||||
"MD014": true,
|
||||
"MD015": true,
|
||||
"MD016": true,
|
||||
"MD017": true,
|
||||
"MD018": true,
|
||||
"MD019": true,
|
||||
"MD020": true,
|
||||
"MD021": true,
|
||||
"MD022": true,
|
||||
"MD023": true,
|
||||
"MD024": true,
|
||||
"MD025": true,
|
||||
"MD026": true,
|
||||
"MD027": true,
|
||||
"MD028": true,
|
||||
"MD029": true,
|
||||
"MD030": true,
|
||||
"MD031": true,
|
||||
"MD032": true
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue