Add MD004 with tests, support disabling rules.

This commit is contained in:
David Anson 2015-03-01 22:56:52 -08:00
parent d2e38c1646
commit 2da9462e45
13 changed files with 201 additions and 7 deletions

View file

@ -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,

View file

@ -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);

View file

@ -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",

View file

@ -0,0 +1,3 @@
* Item
+ Item {MD004}
- Item {MD004}

View file

@ -0,0 +1,3 @@
- Item
* Item {MD004}
+ Item {MD004}

View file

@ -0,0 +1,3 @@
+ Item
* Item {MD004}
- Item {MD004}

View 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
}

View file

@ -0,0 +1,3 @@
* Item
- Item {MD004}
+ Item {MD004}

View 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
}

View file

@ -0,0 +1,3 @@
* Item {MD004}
- Item
+ Item {MD004}

View 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
}

View file

@ -0,0 +1,3 @@
* Item {MD004}
- Item {MD004}
+ Item

View 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
}