mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-22 05:40:48 +02:00
Implement markdownlint-disable-next-line inline comment (fixes #295).
This commit is contained in:
parent
bd63c57fde
commit
a6d30cb724
4 changed files with 51 additions and 8 deletions
|
@ -322,13 +322,13 @@ function getEnabledRulesPerLineNumber(
|
|||
// eslint-disable-next-line jsdoc/require-jsdoc
|
||||
function handleInlineConfig(perLine, forEachMatch, forEachLine) {
|
||||
const input = perLine ? lines : [ lines.join("\n") ];
|
||||
input.forEach((line) => {
|
||||
input.forEach((line, lineIndex) => {
|
||||
if (!noInlineConfig) {
|
||||
let match = null;
|
||||
while ((match = helpers.inlineCommentRe.exec(line))) {
|
||||
const action = (match[1] || match[3]).toUpperCase();
|
||||
const parameter = match[2] || match[4];
|
||||
forEachMatch(action, parameter);
|
||||
forEachMatch(action, parameter, lineIndex + 1);
|
||||
}
|
||||
}
|
||||
if (forEachLine) {
|
||||
|
@ -351,21 +351,21 @@ function getEnabledRulesPerLineNumber(
|
|||
}
|
||||
}
|
||||
// eslint-disable-next-line jsdoc/require-jsdoc
|
||||
function applyEnableDisable(action, parameter) {
|
||||
function applyEnableDisable(action, parameter, state) {
|
||||
const enabled = (action.startsWith("ENABLE"));
|
||||
const items = parameter ?
|
||||
parameter.trim().toUpperCase().split(/\s+/) :
|
||||
allRuleNames;
|
||||
items.forEach((nameUpper) => {
|
||||
(aliasToRuleNames[nameUpper] || []).forEach((ruleName) => {
|
||||
enabledRules[ruleName] = enabled;
|
||||
state[ruleName] = enabled;
|
||||
});
|
||||
});
|
||||
}
|
||||
// eslint-disable-next-line jsdoc/require-jsdoc
|
||||
function enableDisableFile(action, parameter) {
|
||||
if ((action === "ENABLE-FILE") || (action === "DISABLE-FILE")) {
|
||||
applyEnableDisable(action, parameter);
|
||||
applyEnableDisable(action, parameter, enabledRules);
|
||||
}
|
||||
}
|
||||
// eslint-disable-next-line jsdoc/require-jsdoc
|
||||
|
@ -376,12 +376,22 @@ function getEnabledRulesPerLineNumber(
|
|||
enabledRules = { ...capturedRules };
|
||||
} else if ((action === "ENABLE") || (action === "DISABLE")) {
|
||||
enabledRules = { ...enabledRules };
|
||||
applyEnableDisable(action, parameter);
|
||||
applyEnableDisable(action, parameter, enabledRules);
|
||||
}
|
||||
}
|
||||
// eslint-disable-next-line jsdoc/require-jsdoc
|
||||
function updateLineState() {
|
||||
enabledRulesPerLineNumber.push(enabledRules);
|
||||
enabledRulesPerLineNumber.push({ ...enabledRules });
|
||||
}
|
||||
// eslint-disable-next-line jsdoc/require-jsdoc
|
||||
function disableNextLine(action, parameter, lineNumber) {
|
||||
if (action === "DISABLE-NEXT-LINE") {
|
||||
applyEnableDisable(
|
||||
action,
|
||||
parameter,
|
||||
enabledRulesPerLineNumber[lineNumber + 1] || {}
|
||||
);
|
||||
}
|
||||
}
|
||||
// Handle inline comments
|
||||
handleInlineConfig(false, configureFile);
|
||||
|
@ -395,6 +405,7 @@ function getEnabledRulesPerLineNumber(
|
|||
capturedRules = enabledRules;
|
||||
handleInlineConfig(true, enableDisableFile);
|
||||
handleInlineConfig(true, captureRestoreEnableDisable, updateLineState);
|
||||
handleInlineConfig(true, disableNextLine);
|
||||
// Return results
|
||||
return {
|
||||
effectiveConfig,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue