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,
|
"tokens": tokens,
|
||||||
"lines": lines
|
"lines": lines
|
||||||
};
|
};
|
||||||
var result = {};
|
// Merge rules/tags and sanitize config
|
||||||
var defaultRule = (config.default !== undefined) && !!config.default;
|
var mergedRules = {};
|
||||||
// Run each rule
|
var ruleDefault = (config.default !== undefined) && !!config.default;
|
||||||
rules.forEach(function forRule(rule) {
|
rules.forEach(function forRule(rule) {
|
||||||
var ruleConfig = config[rule.name];
|
mergedRules[rule.name] = ruleDefault;
|
||||||
if (ruleConfig || (defaultRule && (ruleConfig === undefined))) {
|
});
|
||||||
// Pass rule-specific options
|
Object.keys(config).forEach(function forKey(key) {
|
||||||
params.options = (ruleConfig instanceof Object) ? ruleConfig : {};
|
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 = [];
|
var errors = [];
|
||||||
rule.func(params, errors);
|
rule.func(params, errors);
|
||||||
// Record any errors
|
// Record any errors
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"comment": "All rules",
|
||||||
|
|
||||||
"default": true
|
"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) {
|
module.exports.filesNotModified = function filesNotModified(test) {
|
||||||
test.expect(2);
|
test.expect(2);
|
||||||
var files = [
|
var files = [
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue