mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-18 06:50:12 +01:00
Everything under `lib/rules/*` is a rules file (with the name of the rule in camelCase), re-exported into an array in `lib/rules.js`. Moved the regular expressions from `lib/rules.js` to `lib/expressions.js`, and the rest of the variables into `lib/shared.js`.
33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
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);
|
|
}
|
|
});
|
|
}
|
|
};
|