mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-22 05:40:48 +02:00
Add support and tests for tags, migrate style files.
This commit is contained in:
parent
0bd6dea637
commit
139e474a12
5 changed files with 215 additions and 7 deletions
|
@ -78,14 +78,35 @@ function lintFile(file, config, callback) {
|
|||
"tokens": tokens,
|
||||
"lines": lines
|
||||
};
|
||||
var result = {};
|
||||
var defaultRule = (config.default !== undefined) && !!config.default;
|
||||
// Run each rule
|
||||
// Merge rules/tags and sanitize config
|
||||
var mergedRules = {};
|
||||
var ruleDefault = (config.default !== undefined) && !!config.default;
|
||||
rules.forEach(function forRule(rule) {
|
||||
var ruleConfig = config[rule.name];
|
||||
if (ruleConfig || (defaultRule && (ruleConfig === undefined))) {
|
||||
// Pass rule-specific options
|
||||
params.options = (ruleConfig instanceof Object) ? ruleConfig : {};
|
||||
mergedRules[rule.name] = ruleDefault;
|
||||
});
|
||||
Object.keys(config).forEach(function forKey(key) {
|
||||
var value = config[key];
|
||||
if (value) {
|
||||
if (!(value instanceof Object)) {
|
||||
value = {};
|
||||
}
|
||||
} else {
|
||||
value = false;
|
||||
}
|
||||
if (ruleToDescription[key]) {
|
||||
mergedRules[key] = value;
|
||||
} else if (tagToRules[key]) {
|
||||
tagToRules[key].forEach(function forRule(rule) {
|
||||
mergedRules[rule] = value;
|
||||
});
|
||||
}
|
||||
});
|
||||
// Run each enabled rule
|
||||
var result = {};
|
||||
rules.forEach(function forRule(rule) {
|
||||
if (mergedRules[rule.name]) {
|
||||
// Configure rule
|
||||
params.options = mergedRules[rule.name];
|
||||
var errors = [];
|
||||
rule.func(params, errors);
|
||||
// Record any errors
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
{
|
||||
"comment": "All rules",
|
||||
|
||||
"default": true
|
||||
}
|
||||
|
|
18
style/cirosantilli.json
Normal file
18
style/cirosantilli.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"comment": "Rules for the style guide at http://www.cirosantilli.com/markdown-style-guide/",
|
||||
|
||||
"default": true,
|
||||
"MD003": {
|
||||
"style": "atx"
|
||||
},
|
||||
"MD004": {
|
||||
"style": "dash"
|
||||
},
|
||||
"MD007": {
|
||||
"indent": 4
|
||||
},
|
||||
"MD030": {
|
||||
"ul_multi": 3,
|
||||
"ol_multi": 2
|
||||
}
|
||||
}
|
9
style/relaxed.json
Normal file
9
style/relaxed.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"comment": "Relaxed rules",
|
||||
|
||||
"default": true,
|
||||
"whitespace": false,
|
||||
"line_length": false,
|
||||
"MD006": false,
|
||||
"MD007": false
|
||||
}
|
|
@ -118,6 +118,164 @@ module.exports.resultFormatting = function resultFormatting(test) {
|
|||
});
|
||||
};
|
||||
|
||||
module.exports.defaultTrue = function defaultTrue(test) {
|
||||
test.expect(2);
|
||||
var options = {
|
||||
"files": [
|
||||
"./test/atx_header_spacing.md",
|
||||
"./test/first_header_bad_atx.md"
|
||||
],
|
||||
"config": {
|
||||
"default": true
|
||||
}
|
||||
};
|
||||
markdownlint(options, function callback(err, actualResult) {
|
||||
test.ifError(err);
|
||||
var expectedResult = {
|
||||
"./test/atx_header_spacing.md": {
|
||||
"MD002": [ 3 ],
|
||||
"MD018": [ 1 ],
|
||||
"MD019": [ 3, 5 ]
|
||||
},
|
||||
"./test/first_header_bad_atx.md": {
|
||||
"MD002": [ 1 ]
|
||||
}
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
test.done();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.defaultFalse = function defaultFalse(test) {
|
||||
test.expect(2);
|
||||
var options = {
|
||||
"files": [
|
||||
"./test/atx_header_spacing.md",
|
||||
"./test/first_header_bad_atx.md"
|
||||
],
|
||||
"config": {
|
||||
"default": false
|
||||
}
|
||||
};
|
||||
markdownlint(options, function callback(err, actualResult) {
|
||||
test.ifError(err);
|
||||
var expectedResult = {
|
||||
"./test/atx_header_spacing.md": {},
|
||||
"./test/first_header_bad_atx.md": {}
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
test.done();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.disableRules = function disableRules(test) {
|
||||
test.expect(2);
|
||||
var options = {
|
||||
"files": [
|
||||
"./test/atx_header_spacing.md",
|
||||
"./test/first_header_bad_atx.md"
|
||||
],
|
||||
"config": {
|
||||
"MD002": false,
|
||||
"default": true,
|
||||
"MD019": false
|
||||
}
|
||||
};
|
||||
markdownlint(options, function callback(err, actualResult) {
|
||||
test.ifError(err);
|
||||
var expectedResult = {
|
||||
"./test/atx_header_spacing.md": {
|
||||
"MD018": [ 1 ]
|
||||
},
|
||||
"./test/first_header_bad_atx.md": {}
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
test.done();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.enableRules = function enableRules(test) {
|
||||
test.expect(2);
|
||||
var options = {
|
||||
"files": [
|
||||
"./test/atx_header_spacing.md",
|
||||
"./test/first_header_bad_atx.md"
|
||||
],
|
||||
"config": {
|
||||
"MD002": true,
|
||||
"default": false,
|
||||
"MD019": true
|
||||
}
|
||||
};
|
||||
markdownlint(options, function callback(err, actualResult) {
|
||||
test.ifError(err);
|
||||
var expectedResult = {
|
||||
"./test/atx_header_spacing.md": {
|
||||
"MD002": [ 3 ],
|
||||
"MD019": [ 3, 5 ]
|
||||
},
|
||||
"./test/first_header_bad_atx.md": {
|
||||
"MD002": [ 1 ]
|
||||
}
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
test.done();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.disableTag = function disableTag(test) {
|
||||
test.expect(2);
|
||||
var options = {
|
||||
"files": [
|
||||
"./test/atx_header_spacing.md",
|
||||
"./test/first_header_bad_atx.md"
|
||||
],
|
||||
"config": {
|
||||
"default": true,
|
||||
"spaces": false
|
||||
}
|
||||
};
|
||||
markdownlint(options, function callback(err, actualResult) {
|
||||
test.ifError(err);
|
||||
var expectedResult = {
|
||||
"./test/atx_header_spacing.md": {
|
||||
"MD002": [ 3 ]
|
||||
},
|
||||
"./test/first_header_bad_atx.md": {
|
||||
"MD002": [ 1 ]
|
||||
}
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
test.done();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.enableTag = function enableTag(test) {
|
||||
test.expect(2);
|
||||
var options = {
|
||||
"files": [
|
||||
"./test/atx_header_spacing.md",
|
||||
"./test/first_header_bad_atx.md"
|
||||
],
|
||||
"config": {
|
||||
"default": false,
|
||||
"spaces": true
|
||||
}
|
||||
};
|
||||
markdownlint(options, function callback(err, actualResult) {
|
||||
test.ifError(err);
|
||||
var expectedResult = {
|
||||
"./test/atx_header_spacing.md": {
|
||||
"MD018": [ 1 ],
|
||||
"MD019": [ 3, 5 ]
|
||||
},
|
||||
"./test/first_header_bad_atx.md": {}
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
test.done();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.filesNotModified = function filesNotModified(test) {
|
||||
test.expect(2);
|
||||
var files = [
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue