mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-18 15:00:13 +01:00
47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
|
|
var shared = require("../shared");
|
||
|
|
|
||
|
|
module.exports = {
|
||
|
|
"name": "MD013",
|
||
|
|
"desc": "Line length",
|
||
|
|
"tags": [ "line_length" ],
|
||
|
|
"aliases": [ "line-length" ],
|
||
|
|
"regexp": shared.longLineReFunc,
|
||
|
|
"func": function MD013(params, errors) {
|
||
|
|
var lineLength = params.options.line_length || shared.defaultLineLength;
|
||
|
|
var codeBlocks = params.options.code_blocks;
|
||
|
|
var includeCodeBlocks = (codeBlocks === undefined) ? true : !!codeBlocks;
|
||
|
|
var tables = params.options.tables;
|
||
|
|
var includeTables = (tables === undefined) ? true : !!tables;
|
||
|
|
var headers = params.options.headers;
|
||
|
|
var includeHeaders = (headers === undefined) ? true : !!headers;
|
||
|
|
var headerLineNumbers = [];
|
||
|
|
if (!includeHeaders) {
|
||
|
|
shared.forEachHeading(params, function forHeading(heading) {
|
||
|
|
headerLineNumbers.push(heading.lineNumber);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
var linkOnlyLineNumbers = [];
|
||
|
|
shared.filterTokens(params, "inline", function forToken(token) {
|
||
|
|
if (((token.children.length === 2) || (token.children.length === 3)) &&
|
||
|
|
(token.children[0].type === "link_open") &&
|
||
|
|
(token.children[token.children.length - 1].type === "link_close")) {
|
||
|
|
linkOnlyLineNumbers.push(token.lineNumber);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
var longLineRe = shared.longLineReFunc(params.options);
|
||
|
|
var labelRe = /^\s*\[.*[^\\]]:/;
|
||
|
|
shared.forEachLine(params,
|
||
|
|
function forLine(line, lineIndex, inCode, onFence, inTable) {
|
||
|
|
var lineNumber = lineIndex + 1;
|
||
|
|
if ((includeCodeBlocks || !inCode) &&
|
||
|
|
(includeTables || !inTable) &&
|
||
|
|
(includeHeaders || (headerLineNumbers.indexOf(lineNumber)) < 0) &&
|
||
|
|
(linkOnlyLineNumbers.indexOf(lineNumber) < 0) &&
|
||
|
|
longLineRe.test(line) &&
|
||
|
|
!labelRe.test(line)) {
|
||
|
|
errors.addDetailIf(lineNumber, lineLength, line.length);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|