Add MD014 with tests.

This commit is contained in:
David Anson 2015-03-05 23:30:01 -08:00
parent 434c7f388c
commit 62314e61b1
4 changed files with 55 additions and 3 deletions

View file

@ -18,7 +18,7 @@ function lintFile(file, config, callback) {
callback(err);
} else {
var tokens = md.parse(contents, {});
var lines = contents.split(/\r\n|\r|\n/g);
var lines = contents.split(/\r\n|\r|\n/);
tokens.forEach(function forToken(token) {
if (token.lines) {
token.line = lines[token.lines[0]];

View file

@ -216,7 +216,7 @@ module.exports = [
var exclusions = [];
filterTokens(params.tokens, "code_block", "fence")
.forEach(function forToken(token) {
for (var i = token.lines[0] ; i < token.lines[1] ; i++) {
for (var i = token.lines[0]; i < token.lines[1]; i++) {
exclusions.push(i);
}
});
@ -246,6 +246,25 @@ module.exports = [
}
},
{
"name": "MD014",
"desc": "Dollar signs used before commands without showing output",
"func": function MD014(params, errors) {
filterTokens(params.tokens, "code_block", "fence")
.forEach(function forToken(token) {
if (token.content && token.content
.split(/\r\n|\r|\n/)
.filter(function filterLine(line) {
return line;
}).every(function forLine(line) {
return /^\$\s/.test(line);
})) {
errors.push(token.lines[0] + 1);
}
});
}
},
{
"name": "MD028",
"desc": "Blank line inside blockquote",

33
test/code_block_dollar.md Normal file
View file

@ -0,0 +1,33 @@
The following code block shouldn't have $ before the commands:
$ ls {MD014}
$ less foo
$ cat bar
However the following code block shows output, and $ can be used to
distinguish between command and output:
$ ls
foo bar
$ less foo
Hello world
$ cat bar
baz
The following code block uses variable names, and likewise shouldn't fire:
$foo = 'bar';
$baz = 'qux';
The following code block doesn't have any dollar signs, and shouldn't fire:
ls foo
cat bar
The following (fenced) code block doesn't have any content at all, and
shouldn't fire:
```
```

View file

@ -31,7 +31,7 @@ function createTestForFile(file) {
var expectedPromise = Q.nfcall(fs.readFile, file, { "encoding": "utf8" })
.then(
function fileContents(contents) {
var lines = contents.split(/\r\n|\r|\n/g);
var lines = contents.split(/\r\n|\r|\n/);
var results = {};
lines.forEach(function forLine(line, lineNum) {
var regex = /\{(MD\d+)(?::(\d+))?\}/g;