mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-16 22:10:13 +01:00
Handle mixed case for config keys.
This commit is contained in:
parent
c98660c492
commit
071bba88fc
2 changed files with 77 additions and 9 deletions
|
|
@ -7,15 +7,16 @@ var shared = require("./shared");
|
||||||
|
|
||||||
// Mappings from rule to description and tag to rules
|
// Mappings from rule to description and tag to rules
|
||||||
var ruleToDescription = {};
|
var ruleToDescription = {};
|
||||||
var tagToRules = {};
|
var tagUpperToRules = {};
|
||||||
rules.forEach(function forRule(rule) {
|
rules.forEach(function forRule(rule) {
|
||||||
ruleToDescription[rule.name] = rule.desc;
|
ruleToDescription[rule.name] = rule.desc;
|
||||||
// The following is useful for updating README.md
|
// The following is useful for updating README.md
|
||||||
// console.log("* **" + rule.name + "** - " + rule.desc);
|
// console.log("* **" + rule.name + "** - " + rule.desc);
|
||||||
rule.tags.forEach(function forTag(tag) {
|
rule.tags.forEach(function forTag(tag) {
|
||||||
var tags = tagToRules[tag] || [];
|
var tagUpper = tag.toUpperCase();
|
||||||
|
var tags = tagUpperToRules[tagUpper] || [];
|
||||||
tags.push(rule.name);
|
tags.push(rule.name);
|
||||||
tagToRules[tag] = tags;
|
tagUpperToRules[tagUpper] = tags;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// The following is useful for updating README.md
|
// The following is useful for updating README.md
|
||||||
|
|
@ -99,8 +100,11 @@ function lintContent(content, config, frontMatter) {
|
||||||
"lines": lines
|
"lines": lines
|
||||||
};
|
};
|
||||||
// Merge rules/tags and sanitize config
|
// Merge rules/tags and sanitize config
|
||||||
|
var defaultKey = Object.keys(config).filter(function forKey(key) {
|
||||||
|
return key.toUpperCase() === "DEFAULT";
|
||||||
|
});
|
||||||
|
var ruleDefault = (defaultKey.length === 0) || !!config[defaultKey[0]];
|
||||||
var mergedRules = {};
|
var mergedRules = {};
|
||||||
var ruleDefault = (config.default === undefined) || !!config.default;
|
|
||||||
rules.forEach(function forRule(rule) {
|
rules.forEach(function forRule(rule) {
|
||||||
mergedRules[rule.name] = ruleDefault;
|
mergedRules[rule.name] = ruleDefault;
|
||||||
});
|
});
|
||||||
|
|
@ -113,11 +117,12 @@ function lintContent(content, config, frontMatter) {
|
||||||
} else {
|
} else {
|
||||||
value = false;
|
value = false;
|
||||||
}
|
}
|
||||||
if (ruleToDescription[key]) {
|
var keyUpper = key.toUpperCase();
|
||||||
mergedRules[key] = value;
|
if (ruleToDescription[keyUpper]) {
|
||||||
} else if (tagToRules[key]) {
|
mergedRules[keyUpper] = value;
|
||||||
tagToRules[key].forEach(function forRule(rule) {
|
} else if (tagUpperToRules[keyUpper]) {
|
||||||
mergedRules[rule] = value;
|
tagUpperToRules[keyUpper].forEach(function forRule(ruleName) {
|
||||||
|
mergedRules[ruleName] = value;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -349,6 +349,35 @@ module.exports.enableRules = function enableRules(test) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module.exports.enableRulesMixedCase = function enableRulesMixedCase(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) {
|
module.exports.disableTag = function disableTag(test) {
|
||||||
test.expect(2);
|
test.expect(2);
|
||||||
var options = {
|
var options = {
|
||||||
|
|
@ -404,6 +433,32 @@ module.exports.enableTag = function enableTag(test) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module.exports.enableTagMixedCase = function enableTagMixedCase(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.styleFiles = function styleFiles(test) {
|
module.exports.styleFiles = function styleFiles(test) {
|
||||||
test.expect(4);
|
test.expect(4);
|
||||||
fs.readdir("./style", function readdir(err, files) {
|
fs.readdir("./style", function readdir(err, files) {
|
||||||
|
|
@ -634,6 +689,14 @@ module.exports.missingStringValue = function missingStringValue(test) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module.exports.ruleNamesUpperCase = function ruleNamesUpperCase(test) {
|
||||||
|
test.expect(37);
|
||||||
|
rules.forEach(function forRule(rule) {
|
||||||
|
test.equal(rule.name, rule.name.toUpperCase(), "Rule name not upper-case.");
|
||||||
|
});
|
||||||
|
test.done();
|
||||||
|
};
|
||||||
|
|
||||||
module.exports.readme = function readme(test) {
|
module.exports.readme = function readme(test) {
|
||||||
test.expect(97);
|
test.expect(97);
|
||||||
var tagToRules = {};
|
var tagToRules = {};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue