markdownlint/lib/rules/noTrailingSpaces.js

34 lines
1.2 KiB
JavaScript
Raw Normal View History

var shared = require("../shared");
var expressions = require("../expressions");
module.exports = {
"name": "MD009",
"desc": "Trailing spaces",
"tags": [ "whitespace" ],
"aliases": [ "no-trailing-spaces" ],
"regexp": expressions.trailingSpaceRe,
"func": function MD009(params, errors) {
var brSpaces = params.options.br_spaces || 0;
var listItemEmptyLines = params.options.list_item_empty_lines;
var allowListItemEmptyLines =
(listItemEmptyLines === undefined) ? false : !!listItemEmptyLines;
var listItemLineNumbers = [];
if (allowListItemEmptyLines) {
shared.filterTokens(params, "list_item_open", function forToken(token) {
for (var i = token.map[0]; i < token.map[1]; i++) {
listItemLineNumbers.push(i + 1);
}
});
}
shared.forEachLine(params, function forLine(line, lineIndex) {
var lineNumber = lineIndex + 1;
if (expressions.trailingSpaceRe.test(line) &&
(listItemLineNumbers.indexOf(lineNumber) === -1)) {
var expected = (brSpaces < 2) ? 0 : brSpaces;
errors.addDetailIf(lineNumber,
expected, line.length - line.trimRight().length);
}
});
}
};