Add MD035 with tests.

This commit is contained in:
David Anson 2015-04-14 09:40:16 -07:00
parent 9acbb2750e
commit 762d8425ca
12 changed files with 166 additions and 3 deletions

View file

@ -65,6 +65,7 @@ cases come directly from that project.
* **MD032** - Lists should be surrounded by blank lines
* **MD033** - Inline HTML
* **MD034** - Bare URL used
* **MD035** - Horizontal rule style
See [Rules.md](doc/Rules.md) for more details.
@ -79,6 +80,7 @@ See [Rules.md](doc/Rules.md) for more details.
* **hard_tab** - MD010
* **headers** - MD001, MD002, MD003, MD018, MD019, MD020, MD021, MD022, MD023,
MD024, MD025, MD026
* **hr** - MD035
* **html** - MD033
* **indentation** - MD005, MD006, MD007, MD027
* **line_length** - MD013

View file

@ -731,3 +731,37 @@ enclose it in a code block, otherwise in some markdown parsers it _will_ be
converted:
`http://www.example.com`
## MD035 - Horizontal rule style
Tags: hr
Parameters: style ("consistent", "---", "***", or other string specifying the
horizontal rule; default "consistent")
This rule is triggered when inconsistent styles of horizontal rules are used
in the document:
---
- - -
***
* * *
****
To fix this, ensure any horizontal rules used in the document are consistent,
or match the given style if the rule is so configured:
---
---
Note: by default, this rule is configured to just require that all horizontal
rules in the document are the same, and will trigger if any of the horizontal
rules are different than the first one encountered in the document. If you
want to configure the rule to match a specific style, the parameter given to
the 'style' option is a string containing the exact horizontal rule text that
is allowed.

View file

@ -649,5 +649,23 @@ module.exports = [
});
});
}
},
{
"name": "MD035",
"desc": "Horizontal rule style",
"tags": [ "hr" ],
"func": function MD035(params, errors) {
var style = params.options.style || "consistent";
var horizontalRules = filterTokens(params.tokens, "hr");
if ((style === "consistent") && horizontalRules.length) {
style = horizontalRules[0].line;
}
horizontalRules.forEach(function forToken(token) {
if (token.line !== style) {
errors.push(token.lineNumber);
}
});
}
}
];

View file

@ -15,5 +15,8 @@
"ul_multi": 3,
"ol_multi": 2
},
"MD033": false
"MD033": false,
"MD035": {
"style": "---"
}
}

View file

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

22
test/hr_style_dashes.md Normal file
View file

@ -0,0 +1,22 @@
***
* * *
*****
---
- - -
-----
___
_ _ _
_____
***
{MD035:1} {MD035:3} {MD035:5} {MD035:9} {MD035:11} {MD035:13} {MD035:15}
{MD035:17} {MD035:19}

View file

@ -0,0 +1,22 @@
***
* * *
*****
---
- - -
-----
___
_ _ _
_____
***
{MD035:3} {MD035:5} {MD035:7} {MD035:9} {MD035:11} {MD035:13} {MD035:15}
{MD035:17}

6
test/hr_style_long.json Normal file
View file

@ -0,0 +1,6 @@
{
"default": true,
"MD035": {
"style": "_____"
}
}

22
test/hr_style_long.md Normal file
View file

@ -0,0 +1,22 @@
***
* * *
*****
---
- - -
-----
___
_ _ _
_____
***
{MD035:1} {MD035:3} {MD035:5} {MD035:7} {MD035:9} {MD035:11} {MD035:13}
{MD035:15} {MD035:19}

6
test/hr_style_stars.json Normal file
View file

@ -0,0 +1,6 @@
{
"default": true,
"MD035": {
"style": "***"
}
}

22
test/hr_style_stars.md Normal file
View file

@ -0,0 +1,22 @@
***
* * *
*****
---
- - -
-----
___
_ _ _
_____
***
{MD035:3} {MD035:5} {MD035:7} {MD035:9} {MD035:11} {MD035:13} {MD035:15}
{MD035:17}

View file

@ -498,7 +498,7 @@ module.exports.badFileSync = function badFileSync(test) {
};
module.exports.readme = function readme(test) {
test.expect(80);
test.expect(83);
var tagToRules = {};
rules.forEach(function forRule(rule) {
rule.tags.forEach(function forTag(tag) {
@ -555,7 +555,7 @@ module.exports.readme = function readme(test) {
};
module.exports.doc = function doc(test) {
test.expect(123);
test.expect(127);
fs.readFile("doc/Rules.md", shared.utf8Encoding,
function readFile(err, contents) {
test.ifError(err);