Hook up ESLint, fix warnings (including conversion to async I/O).

This commit is contained in:
David Anson 2015-02-24 18:40:37 -08:00
parent d16e1cafc1
commit 160146ac3a
5 changed files with 230 additions and 41 deletions

View file

@ -3,25 +3,42 @@
var fs = require("fs");
var rules = require("./rules");
function lintFile(file, options) {
var results = {};
var contents = fs.readFileSync(file, { encoding: "utf8" });
var lines = contents.split(/\r\n|\n/g);
Object.keys(rules).forEach(function(name) {
var rule = rules[name];
var errors = rule(lines);
if (errors.length) {
results[name] = errors;
function lintFile(file, options, callback) {
fs.readFile(file, { "encoding": "utf8" }, function readFile(err, contents) {
if (err) {
callback(err);
} else {
var lines = contents.split(/\r\n|\n/g);
var result = {};
Object.keys(rules).forEach(function forRule(name) {
var rule = rules[name];
var errors = rule(lines);
if (errors.length) {
result[name] = errors;
}
});
callback(null, result);
}
});
return results;
}
module.exports = function(options) {
module.exports = function markdownlint(options, callback) {
var results = {};
var files = options.files || [];
files.forEach(function(file) {
results[file] = lintFile(file, options);
});
return results;
function lintFiles() {
var file = files.shift();
if (file) {
lintFile(file, options, function lintFileCallback(err, result) {
if (err) {
callback(err);
} else {
results[file] = result;
lintFiles();
}
});
} else {
callback(null, results);
}
}
lintFiles();
};

View file

@ -3,20 +3,20 @@
function padAndTrim(lines) {
return [].concat(
"",
lines.map(function(line) {
lines.map(function mapLine(line) {
return line.trim();
}),
"");
}
module.exports = {
MD031: function(lines) {
"MD031": function MD031(lines) {
// Some parsers have trouble detecting fenced code blocks without
// surrounding whitespace, so examine the lines directly.
lines = padAndTrim(lines);
var errors = [];
var inCode = false;
lines.forEach(function(line, lineNum) {
lines.forEach(function forLine(line, lineNum) {
if (line.match(/^(```|~~~)/)) {
inCode = !inCode;
if ((inCode && lines[lineNum - 1].length) ||