mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-22 05:40:48 +02:00
Merge rule name/alias in rule definitions and results (for resultVersion 2).
This commit is contained in:
parent
b565c1ff32
commit
54c28f47c3
13 changed files with 322 additions and 291 deletions
|
@ -8,31 +8,36 @@ var md = require("markdown-it")({ "html": true });
|
|||
var rules = require("./rules");
|
||||
var shared = require("./shared");
|
||||
|
||||
// Mappings from rule to description and tag to rules
|
||||
// Mappings from rule to description and name/tag to rules
|
||||
var allRuleNames = [];
|
||||
var ruleNameToRule = {};
|
||||
var idUpperToRuleNames = {};
|
||||
// var tagToRuleNames = {};
|
||||
rules.forEach(function forRule(rule) {
|
||||
allRuleNames.push(rule.name);
|
||||
ruleNameToRule[rule.name] = rule;
|
||||
var ruleName = rule.names[0];
|
||||
var ruleAliases = rule.names.slice(1);
|
||||
allRuleNames.push(ruleName);
|
||||
ruleNameToRule[ruleName] = rule;
|
||||
// The following is useful for updating README.md
|
||||
// console.log(
|
||||
// "* **[" + rule.name + "](doc/Rules.md#" + rule.name.toLowerCase() +
|
||||
// ")** *" + rule.aliases.join(", ") + "* - " + rule.desc);
|
||||
// "* **[" + ruleName + "](doc/Rules.md#" + ruleName.toLowerCase() +
|
||||
// ")** *" + ruleAliases.join(", ") + "* - " + rule.desc);
|
||||
rule.tags.forEach(function forTag(tag) {
|
||||
var tagUpper = tag.toUpperCase();
|
||||
var ruleNames = idUpperToRuleNames[tagUpper] || [];
|
||||
ruleNames.push(rule.name);
|
||||
ruleNames.push(ruleName);
|
||||
idUpperToRuleNames[tagUpper] = ruleNames;
|
||||
// tagToRuleNames[tag] = ruleName;
|
||||
});
|
||||
rule.aliases.forEach(function forAlias(alias) {
|
||||
ruleAliases.forEach(function forAlias(alias) {
|
||||
var aliasUpper = alias.toUpperCase();
|
||||
idUpperToRuleNames[aliasUpper] = [ rule.name ];
|
||||
idUpperToRuleNames[aliasUpper] = [ ruleName ];
|
||||
});
|
||||
});
|
||||
// The following is useful for updating README.md
|
||||
// Object.keys(idUpperToRuleNames).sort().forEach(function forTag(tag) {
|
||||
// console.log("* **" + tag + "** - " + idUpperToRuleNames[tag].join(", "));
|
||||
// Object.keys(tagToRuleNames).sort().forEach(function forTag(tag) {
|
||||
// console.log("* **" + tag + "** - " +
|
||||
// idUpperToRuleNames[tag.toUpperCase()].join(", "));
|
||||
// });
|
||||
|
||||
// Class for results with toString for pretty display
|
||||
|
@ -44,11 +49,13 @@ Results.prototype.toString = function resultsToString(useAlias) {
|
|||
var fileResults = that[file];
|
||||
if (Array.isArray(fileResults)) {
|
||||
fileResults.forEach(function forResult(result) {
|
||||
var ruleMoniker = result.ruleNames ?
|
||||
result.ruleNames.join("/") :
|
||||
(result.ruleName + "/" + result.ruleAlias);
|
||||
results.push(
|
||||
file + ": " +
|
||||
result.lineNumber + ": " +
|
||||
result.ruleName + "/" +
|
||||
result.ruleAlias + " " +
|
||||
ruleMoniker + " " +
|
||||
result.ruleDescription +
|
||||
(result.errorDetail ?
|
||||
" [" + result.errorDetail + "]" :
|
||||
|
@ -65,7 +72,7 @@ Results.prototype.toString = function resultsToString(useAlias) {
|
|||
var result =
|
||||
file + ": " +
|
||||
lineNumber + ": " +
|
||||
(useAlias ? rule.aliases[0] : rule.name) + " " +
|
||||
rule.names[useAlias ? 1 : 0] + " " +
|
||||
rule.desc;
|
||||
results.push(result);
|
||||
});
|
||||
|
@ -155,7 +162,8 @@ function lintContent(
|
|||
var ruleDefault = (defaultKey.length === 0) || !!config[defaultKey[0]];
|
||||
var mergedRules = {};
|
||||
rules.forEach(function forRule(rule) {
|
||||
mergedRules[rule.name] = ruleDefault;
|
||||
var ruleName = rule.names[0];
|
||||
mergedRules[ruleName] = ruleDefault;
|
||||
});
|
||||
Object.keys(config).forEach(function forKey(key) {
|
||||
var value = config[key];
|
||||
|
@ -178,7 +186,8 @@ function lintContent(
|
|||
// Create mapping of enabled rules per line
|
||||
var enabledRules = {};
|
||||
rules.forEach(function forRule(rule) {
|
||||
enabledRules[rule.name] = !!mergedRules[rule.name];
|
||||
var ruleName = rule.names[0];
|
||||
enabledRules[ruleName] = !!mergedRules[ruleName];
|
||||
});
|
||||
function forMatch(match) {
|
||||
var enabled = match[1].toUpperCase() === "EN";
|
||||
|
@ -220,7 +229,8 @@ function lintContent(
|
|||
var result = (resultVersion === 0) ? {} : [];
|
||||
rules.forEach(function forRule(rule) {
|
||||
// Configure rule
|
||||
params.options = mergedRules[rule.name];
|
||||
var ruleName = rule.names[0];
|
||||
params.options = mergedRules[ruleName];
|
||||
var errors = [];
|
||||
function addError(lineNumber, detail, context, range) {
|
||||
errors.push({
|
||||
|
@ -272,7 +282,7 @@ function lintContent(
|
|||
var filteredErrors = errors
|
||||
.filter(uniqueFilterForSortedErrors)
|
||||
.filter(function removeDisabledRules(error) {
|
||||
return enabledRulesPerLineNumber[error.lineNumber][rule.name];
|
||||
return enabledRulesPerLineNumber[error.lineNumber][ruleName];
|
||||
})
|
||||
.map(function formatResults(error) {
|
||||
if (resultVersion === 0) {
|
||||
|
@ -296,19 +306,23 @@ function lintContent(
|
|||
range = [ column, length ];
|
||||
}
|
||||
}
|
||||
return {
|
||||
"lineNumber": error.lineNumber,
|
||||
"ruleName": rule.name,
|
||||
"ruleAlias": rule.aliases[0],
|
||||
"ruleDescription": rule.desc,
|
||||
"errorDetail": error.detail,
|
||||
"errorContext": error.context,
|
||||
"errorRange": range
|
||||
};
|
||||
var errorObject = {};
|
||||
errorObject.lineNumber = error.lineNumber;
|
||||
if (resultVersion === 1) {
|
||||
errorObject.ruleName = rule.names[0];
|
||||
errorObject.ruleAlias = rule.names[1];
|
||||
} else {
|
||||
errorObject.ruleNames = rule.names;
|
||||
}
|
||||
errorObject.ruleDescription = rule.desc;
|
||||
errorObject.errorDetail = error.detail;
|
||||
errorObject.errorContext = error.context;
|
||||
errorObject.errorRange = range;
|
||||
return errorObject;
|
||||
});
|
||||
if (filteredErrors.length) {
|
||||
if (resultVersion === 0) {
|
||||
result[rule.name] = filteredErrors;
|
||||
result[ruleName] = filteredErrors;
|
||||
} else {
|
||||
result.push.apply(result, filteredErrors);
|
||||
}
|
||||
|
@ -359,7 +373,7 @@ function lintInput(options, synchronous, callback) {
|
|||
shared.frontMatterRe : options.frontMatter;
|
||||
var noInlineConfig = !!options.noInlineConfig;
|
||||
var resultVersion = (options.resultVersion === undefined) ?
|
||||
1 : options.resultVersion;
|
||||
2 : options.resultVersion;
|
||||
var results = new Results();
|
||||
// Helper to lint the next file in the array
|
||||
function lintFilesArray() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue