mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2026-01-11 02:18:50 +01:00
wip
This commit is contained in:
parent
996c0f6b27
commit
b3564ea841
12 changed files with 1606 additions and 64 deletions
240
lib/configuration-strict.d.ts
vendored
240
lib/configuration-strict.d.ts
vendored
|
|
@ -1865,97 +1865,289 @@ export interface ConfigurationStrict {
|
|||
/**
|
||||
* headings : MD001, MD003, MD018, MD019, MD020, MD021, MD022, MD023, MD024, MD025, MD026, MD036, MD041, MD043
|
||||
*/
|
||||
headings?: boolean | ("error" | "warning");
|
||||
headings?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* bullet : MD004, MD005, MD007, MD032
|
||||
*/
|
||||
bullet?: boolean | ("error" | "warning");
|
||||
bullet?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* ul : MD004, MD005, MD007, MD030, MD032
|
||||
*/
|
||||
ul?: boolean | ("error" | "warning");
|
||||
ul?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* indentation : MD005, MD007, MD027
|
||||
*/
|
||||
indentation?: boolean | ("error" | "warning");
|
||||
indentation?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* whitespace : MD009, MD010, MD012, MD027, MD028, MD030, MD037, MD038, MD039
|
||||
*/
|
||||
whitespace?: boolean | ("error" | "warning");
|
||||
whitespace?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* hard_tab : MD010
|
||||
*/
|
||||
hard_tab?: boolean | ("error" | "warning");
|
||||
hard_tab?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* links : MD011, MD034, MD039, MD042, MD051, MD052, MD053, MD054, MD059
|
||||
*/
|
||||
links?: boolean | ("error" | "warning");
|
||||
links?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* blank_lines : MD012, MD022, MD031, MD032, MD047
|
||||
*/
|
||||
blank_lines?: boolean | ("error" | "warning");
|
||||
blank_lines?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* line_length : MD013
|
||||
*/
|
||||
line_length?: boolean | ("error" | "warning");
|
||||
line_length?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* code : MD014, MD031, MD038, MD040, MD046, MD048
|
||||
*/
|
||||
code?: boolean | ("error" | "warning");
|
||||
code?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* atx : MD018, MD019
|
||||
*/
|
||||
atx?: boolean | ("error" | "warning");
|
||||
atx?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* spaces : MD018, MD019, MD020, MD021, MD023
|
||||
*/
|
||||
spaces?: boolean | ("error" | "warning");
|
||||
spaces?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* atx_closed : MD020, MD021
|
||||
*/
|
||||
atx_closed?: boolean | ("error" | "warning");
|
||||
atx_closed?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* blockquote : MD027, MD028
|
||||
*/
|
||||
blockquote?: boolean | ("error" | "warning");
|
||||
blockquote?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* ol : MD029, MD030, MD032
|
||||
*/
|
||||
ol?: boolean | ("error" | "warning");
|
||||
ol?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* html : MD033
|
||||
*/
|
||||
html?: boolean | ("error" | "warning");
|
||||
html?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* url : MD034
|
||||
*/
|
||||
url?: boolean | ("error" | "warning");
|
||||
url?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* hr : MD035
|
||||
*/
|
||||
hr?: boolean | ("error" | "warning");
|
||||
hr?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* emphasis : MD036, MD037, MD049, MD050
|
||||
*/
|
||||
emphasis?: boolean | ("error" | "warning");
|
||||
emphasis?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* language : MD040
|
||||
*/
|
||||
language?: boolean | ("error" | "warning");
|
||||
language?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* spelling : MD044
|
||||
*/
|
||||
spelling?: boolean | ("error" | "warning");
|
||||
spelling?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* accessibility : MD045, MD059
|
||||
*/
|
||||
accessibility?: boolean | ("error" | "warning");
|
||||
accessibility?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* images : MD045, MD052, MD053, MD054
|
||||
*/
|
||||
images?: boolean | ("error" | "warning");
|
||||
images?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
/**
|
||||
* table : MD055, MD056, MD058, MD060
|
||||
*/
|
||||
table?: boolean | ("error" | "warning");
|
||||
table?:
|
||||
| boolean
|
||||
| ("error" | "warning")
|
||||
| {
|
||||
/**
|
||||
* Tag severity
|
||||
*/
|
||||
severity?: "error" | "warning" | "off";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,10 @@ export type EnabledRulesPerLineNumberResult = {
|
|||
* Enabled rule list.
|
||||
*/
|
||||
enabledRuleList: Rule[];
|
||||
/**
|
||||
* Rule severities
|
||||
*/
|
||||
ruleSeverities: Map<string, "error" | "warning" | "off">;
|
||||
};
|
||||
/**
|
||||
* Function to implement rule logic.
|
||||
|
|
|
|||
|
|
@ -276,6 +276,7 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
|
|||
// effectiveConfig[ruleName] = false;
|
||||
// }
|
||||
for (const key of Object.keys(config)) {
|
||||
const keyUpper = key.toUpperCase();
|
||||
let value = config[key];
|
||||
if (value) {
|
||||
if (value instanceof Object) {
|
||||
|
|
@ -284,20 +285,27 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
|
|||
if (severity === "off") {
|
||||
value = false;
|
||||
} else {
|
||||
if (severity === "warning") {
|
||||
ruleSeverities.set(key.toUpperCase(), "warning");
|
||||
} else {
|
||||
ruleSeverities.set(key.toUpperCase(), "error");
|
||||
for (const ruleName of (aliasToRuleNames[keyUpper] || [])) {
|
||||
if (severity === "warning") {
|
||||
ruleSeverities.set(ruleName, "warning");
|
||||
} else {
|
||||
ruleSeverities.set(ruleName, "error");
|
||||
}
|
||||
}
|
||||
value = Object.fromEntries(Object.entries(value).filter(([ k ]) => k !== "severity"));
|
||||
}
|
||||
} else {
|
||||
if (value === "warning") {
|
||||
for (const ruleName of (aliasToRuleNames[keyUpper] || [])) {
|
||||
ruleSeverities.set(ruleName, "warning");
|
||||
}
|
||||
}
|
||||
value = {};
|
||||
}
|
||||
} else {
|
||||
value = false;
|
||||
}
|
||||
for (const ruleName of (aliasToRuleNames[key.toUpperCase()] || [])) {
|
||||
for (const ruleName of (aliasToRuleNames[keyUpper] || [])) {
|
||||
effectiveConfig[ruleName] = value;
|
||||
}
|
||||
}
|
||||
|
|
@ -314,6 +322,7 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
|
|||
* @property {Configuration} effectiveConfig Effective configuration.
|
||||
* @property {any[]} enabledRulesPerLineNumber Enabled rules per line number.
|
||||
* @property {Rule[]} enabledRuleList Enabled rule list.
|
||||
* @property {Map<string, "error" | "warning" | "off">} ruleSeverities Rule severities
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
@ -428,7 +437,7 @@ function getEnabledRulesPerLineNumber(
|
|||
}
|
||||
// Handle inline comments
|
||||
handleInlineConfig([ lines.join("\n") ], configureFile);
|
||||
const { effectiveConfig } = getEffectiveConfig(ruleList, config, aliasToRuleNames);
|
||||
const { effectiveConfig, ruleSeverities } = getEffectiveConfig(ruleList, config, aliasToRuleNames);
|
||||
for (const rule of ruleList) {
|
||||
const ruleName = rule.names[0].toUpperCase();
|
||||
allRuleNames.push(ruleName);
|
||||
|
|
@ -449,7 +458,8 @@ function getEnabledRulesPerLineNumber(
|
|||
return {
|
||||
effectiveConfig,
|
||||
enabledRulesPerLineNumber,
|
||||
enabledRuleList
|
||||
enabledRuleList,
|
||||
ruleSeverities
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -494,7 +504,7 @@ function lintContent(
|
|||
const { frontMatterLines } = removeFrontMatterResult;
|
||||
content = removeFrontMatterResult.content;
|
||||
// Get enabled rules per line (with HTML comments present)
|
||||
const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList } =
|
||||
const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList, ruleSeverities } =
|
||||
getEnabledRulesPerLineNumber(
|
||||
ruleList,
|
||||
content.split(helpers.newLineRe),
|
||||
|
|
@ -668,7 +678,8 @@ function lintContent(
|
|||
"errorContext": errorInfo.context?.replace(helpers.newLineRe, " ") || null,
|
||||
"errorRange": errorInfo.range ? [ ...errorInfo.range ] : null,
|
||||
"fixInfo": fixInfo ? cleanFixInfo : null,
|
||||
"severity": "error"
|
||||
// @ts-ignore
|
||||
"severity": ruleSeverities.get(ruleName)
|
||||
});
|
||||
}
|
||||
// Call (possibly external) rule function to report errors
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue