mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 06:20:12 +01:00
Update to only invoke rules that are used at least once by the content.
This commit is contained in:
parent
6870a48829
commit
85e704f32a
3 changed files with 48 additions and 10 deletions
|
|
@ -2063,10 +2063,18 @@ function getEnabledRulesPerLineNumber(
|
||||||
handleInlineConfig(lines, enableDisableFile);
|
handleInlineConfig(lines, enableDisableFile);
|
||||||
handleInlineConfig(lines, captureRestoreEnableDisable, updateLineState);
|
handleInlineConfig(lines, captureRestoreEnableDisable, updateLineState);
|
||||||
handleInlineConfig(lines, disableLineNextLine);
|
handleInlineConfig(lines, disableLineNextLine);
|
||||||
|
// Create the list of rules that are used at least once
|
||||||
|
const enabledRuleList = [];
|
||||||
|
for (const [ index, ruleName ] of allRuleNames.entries()) {
|
||||||
|
if (enabledRulesPerLineNumber.some((enabledRulesForLine) => enabledRulesForLine[ruleName])) {
|
||||||
|
enabledRuleList.push(ruleList[index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Return results
|
// Return results
|
||||||
return {
|
return {
|
||||||
effectiveConfig,
|
effectiveConfig,
|
||||||
enabledRulesPerLineNumber
|
enabledRulesPerLineNumber,
|
||||||
|
enabledRuleList
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2108,7 +2116,7 @@ function lintContent(
|
||||||
const { frontMatterLines } = removeFrontMatterResult;
|
const { frontMatterLines } = removeFrontMatterResult;
|
||||||
content = removeFrontMatterResult.content;
|
content = removeFrontMatterResult.content;
|
||||||
// Get enabled rules per line (with HTML comments present)
|
// Get enabled rules per line (with HTML comments present)
|
||||||
const { effectiveConfig, enabledRulesPerLineNumber } =
|
const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList } =
|
||||||
getEnabledRulesPerLineNumber(
|
getEnabledRulesPerLineNumber(
|
||||||
ruleList,
|
ruleList,
|
||||||
content.split(helpers.newLineRe),
|
content.split(helpers.newLineRe),
|
||||||
|
|
@ -2118,7 +2126,7 @@ function lintContent(
|
||||||
configParsers,
|
configParsers,
|
||||||
aliasToRuleNames
|
aliasToRuleNames
|
||||||
);
|
);
|
||||||
const needMarkdownItTokens = ruleList.some(
|
const needMarkdownItTokens = enabledRuleList.some(
|
||||||
(rule) => (rule.parser === "markdownit") || (rule.parser === undefined)
|
(rule) => (rule.parser === "markdownit") || (rule.parser === undefined)
|
||||||
);
|
);
|
||||||
// Parse content into parser tokens
|
// Parse content into parser tokens
|
||||||
|
|
@ -2350,8 +2358,8 @@ function lintContent(
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
// Run all rules
|
// Run all rules
|
||||||
const ruleListAsync = ruleList.filter((rule) => rule.asynchronous);
|
const ruleListAsync = enabledRuleList.filter((rule) => rule.asynchronous);
|
||||||
const ruleListSync = ruleList.filter((rule) => !rule.asynchronous);
|
const ruleListSync = enabledRuleList.filter((rule) => !rule.asynchronous);
|
||||||
const ruleListAsyncFirst = [
|
const ruleListAsyncFirst = [
|
||||||
...ruleListAsync,
|
...ruleListAsync,
|
||||||
...ruleListSync
|
...ruleListSync
|
||||||
|
|
|
||||||
|
|
@ -510,10 +510,18 @@ function getEnabledRulesPerLineNumber(
|
||||||
handleInlineConfig(lines, enableDisableFile);
|
handleInlineConfig(lines, enableDisableFile);
|
||||||
handleInlineConfig(lines, captureRestoreEnableDisable, updateLineState);
|
handleInlineConfig(lines, captureRestoreEnableDisable, updateLineState);
|
||||||
handleInlineConfig(lines, disableLineNextLine);
|
handleInlineConfig(lines, disableLineNextLine);
|
||||||
|
// Create the list of rules that are used at least once
|
||||||
|
const enabledRuleList = [];
|
||||||
|
for (const [ index, ruleName ] of allRuleNames.entries()) {
|
||||||
|
if (enabledRulesPerLineNumber.some((enabledRulesForLine) => enabledRulesForLine[ruleName])) {
|
||||||
|
enabledRuleList.push(ruleList[index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Return results
|
// Return results
|
||||||
return {
|
return {
|
||||||
effectiveConfig,
|
effectiveConfig,
|
||||||
enabledRulesPerLineNumber
|
enabledRulesPerLineNumber,
|
||||||
|
enabledRuleList
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -555,7 +563,7 @@ function lintContent(
|
||||||
const { frontMatterLines } = removeFrontMatterResult;
|
const { frontMatterLines } = removeFrontMatterResult;
|
||||||
content = removeFrontMatterResult.content;
|
content = removeFrontMatterResult.content;
|
||||||
// Get enabled rules per line (with HTML comments present)
|
// Get enabled rules per line (with HTML comments present)
|
||||||
const { effectiveConfig, enabledRulesPerLineNumber } =
|
const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList } =
|
||||||
getEnabledRulesPerLineNumber(
|
getEnabledRulesPerLineNumber(
|
||||||
ruleList,
|
ruleList,
|
||||||
content.split(helpers.newLineRe),
|
content.split(helpers.newLineRe),
|
||||||
|
|
@ -565,7 +573,7 @@ function lintContent(
|
||||||
configParsers,
|
configParsers,
|
||||||
aliasToRuleNames
|
aliasToRuleNames
|
||||||
);
|
);
|
||||||
const needMarkdownItTokens = ruleList.some(
|
const needMarkdownItTokens = enabledRuleList.some(
|
||||||
(rule) => (rule.parser === "markdownit") || (rule.parser === undefined)
|
(rule) => (rule.parser === "markdownit") || (rule.parser === undefined)
|
||||||
);
|
);
|
||||||
// Parse content into parser tokens
|
// Parse content into parser tokens
|
||||||
|
|
@ -797,8 +805,8 @@ function lintContent(
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
// Run all rules
|
// Run all rules
|
||||||
const ruleListAsync = ruleList.filter((rule) => rule.asynchronous);
|
const ruleListAsync = enabledRuleList.filter((rule) => rule.asynchronous);
|
||||||
const ruleListSync = ruleList.filter((rule) => !rule.asynchronous);
|
const ruleListSync = enabledRuleList.filter((rule) => !rule.asynchronous);
|
||||||
const ruleListAsyncFirst = [
|
const ruleListAsyncFirst = [
|
||||||
...ruleListAsync,
|
...ruleListAsync,
|
||||||
...ruleListSync
|
...ruleListSync
|
||||||
|
|
|
||||||
|
|
@ -1161,6 +1161,28 @@ test("markdownItPluginsNoMarkdownIt", (t) => new Promise((resolve) => {
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
test("markdownItPluginsUnusedUncalled", (t) => new Promise((resolve) => {
|
||||||
|
t.plan(2);
|
||||||
|
markdownlint({
|
||||||
|
"config": {
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"strings": {
|
||||||
|
"string": "# Heading\n\nText\n"
|
||||||
|
},
|
||||||
|
// Use a markdown-it custom rule so the markdown-it plugin will be run
|
||||||
|
"customRules": customRules.anyBlockquote,
|
||||||
|
"markdownItPlugins": [
|
||||||
|
[ pluginInline, "check_text_plugin", "text", () => t.fail() ]
|
||||||
|
]
|
||||||
|
}, function callback(err, actual) {
|
||||||
|
t.falsy(err);
|
||||||
|
const expected = { "string": [] };
|
||||||
|
t.deepEqual(actual, expected, "Unexpected issues.");
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
test("Pandoc footnote", (t) => new Promise((resolve) => {
|
test("Pandoc footnote", (t) => new Promise((resolve) => {
|
||||||
t.plan(2);
|
t.plan(2);
|
||||||
markdownlint({
|
markdownlint({
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue