mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-16 22:10:13 +01:00
Add "severity"/"error" to rule in Configuration object, add corresponding documentation, resolve some new type-checking issues.
This commit is contained in:
parent
1d2d3ed581
commit
c6f248321e
13 changed files with 4030 additions and 688 deletions
38
README.md
38
README.md
|
|
@ -375,12 +375,48 @@ for all rules. Using a tag name (e.g., `whitespace`) and a setting of `false`,
|
|||
configuration object is passed or the optional `default` setting is not present,
|
||||
all rules are enabled.
|
||||
|
||||
The following syntax disables the specified rule, tag, or `default`:
|
||||
|
||||
```javascript
|
||||
{
|
||||
"rule_name": false
|
||||
}
|
||||
```
|
||||
|
||||
The following syntax enables the specified rule, tag, or `default`:
|
||||
|
||||
```javascript
|
||||
{
|
||||
"rule_name": true
|
||||
// OR
|
||||
"rule_name": "error"
|
||||
}
|
||||
```
|
||||
|
||||
The following syntax enables and configures the specified rule:
|
||||
|
||||
```javascript
|
||||
{
|
||||
"rule_name": {
|
||||
"parameter": "value"
|
||||
}
|
||||
// OR
|
||||
"rule_name": {
|
||||
"parameter": "value",
|
||||
"severity": "error"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> Note that `error` and `severity` are not supported by library versions earlier
|
||||
> than `0.39.0`. However, all examples above behave the same.
|
||||
|
||||
To evaluate a configuration object, the `default` setting is applied first, then
|
||||
keys are processed in order from top to bottom. If multiple values apply to a
|
||||
rule (because of tag names or duplication), later values override earlier ones.
|
||||
Keys (including rule names, aliases, tags, or `default`) are not case-sensitive.
|
||||
|
||||
Example:
|
||||
Example using `default`, rule names, and tag names together:
|
||||
|
||||
```json
|
||||
{
|
||||
|
|
|
|||
|
|
@ -61,8 +61,12 @@ for (const rule of rules) {
|
|||
""
|
||||
);
|
||||
const ruleData = schema.properties[name];
|
||||
const ruleProperties = ruleData.oneOf.at(-1).properties;
|
||||
if (ruleProperties) {
|
||||
const ruleProperties = Object.fromEntries(
|
||||
Object.entries(
|
||||
ruleData.oneOf.at(-1).properties
|
||||
).filter(([ key ]) => key !== "severity")
|
||||
);
|
||||
if (Object.keys(ruleProperties).length > 0) {
|
||||
section.push(
|
||||
"Parameters:",
|
||||
""
|
||||
|
|
|
|||
660
lib/configuration-strict.d.ts
vendored
660
lib/configuration-strict.d.ts
vendored
File diff suppressed because it is too large
Load diff
|
|
@ -262,9 +262,9 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
|
|||
for (const key of Object.keys(config)) {
|
||||
let value = config[key];
|
||||
if (value) {
|
||||
if (!(value instanceof Object)) {
|
||||
value = {};
|
||||
}
|
||||
value = (value instanceof Object) ?
|
||||
Object.fromEntries(Object.entries(value).filter(([ k ]) => k !== "severity")) :
|
||||
{};
|
||||
} else {
|
||||
value = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,14 +6,20 @@ import yaml from "js-yaml";
|
|||
import { __dirname, importWithTypeJson } from "../test/esm-helpers.mjs";
|
||||
const configSchema = await importWithTypeJson(import.meta, "../schema/markdownlint-config-schema.json");
|
||||
|
||||
/** @type {Object<string, any>} */
|
||||
const configExample = {};
|
||||
for (const rule in configSchema.properties) {
|
||||
if (/^(?:MD\d{3}|default|extends)$/.test(rule)) {
|
||||
const properties = configSchema.properties[rule];
|
||||
configExample[rule + "-description"] = properties.description;
|
||||
configExample[rule] = properties.default;
|
||||
const subproperties = properties.oneOf?.at(-1).properties;
|
||||
if (subproperties) {
|
||||
const subproperties = Object.fromEntries(
|
||||
Object.entries(
|
||||
properties.oneOf?.at(-1).properties || []
|
||||
).filter(([ key ]) => key !== "severity")
|
||||
);
|
||||
if (Object.keys(subproperties).length > 0) {
|
||||
/** @type {Object<string, any>} */
|
||||
const ruleExample = {};
|
||||
// eslint-disable-next-line guard-for-in
|
||||
for (const property in subproperties) {
|
||||
|
|
@ -26,6 +32,13 @@ for (const rule in configSchema.properties) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms comments to use the specified prefix.
|
||||
*
|
||||
* @param {string} input Markdown input.
|
||||
* @param {string} commentPrefix Comment prefix.
|
||||
* @returns {string} Transformed input.
|
||||
*/
|
||||
const transformComments = (input, commentPrefix) => (
|
||||
commentPrefix +
|
||||
" Example markdownlint configuration with all properties set to their default value\n" +
|
||||
|
|
|
|||
|
|
@ -70,25 +70,34 @@ for (const rule of rules) {
|
|||
],
|
||||
"default": true
|
||||
};
|
||||
/** @type {{type: "object", additionalProperties: boolean, properties?: object}} */
|
||||
const subscheme = {
|
||||
"type": "object",
|
||||
"additionalProperties": false
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"severity": {
|
||||
"description": "Rule severity",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"error"
|
||||
],
|
||||
"default": "error"
|
||||
}
|
||||
}
|
||||
};
|
||||
let custom = true;
|
||||
scheme.oneOf.push(subscheme);
|
||||
/* eslint-disable camelcase */
|
||||
switch (ruleName) {
|
||||
case "MD001":
|
||||
subscheme.properties = {
|
||||
"front_matter_title": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.front_matter_title = {
|
||||
"description": "RegExp for matching title in front matter",
|
||||
"type": "string",
|
||||
"default": "^\\s*title\\s*[:=]"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD003":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "Heading style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -100,12 +109,11 @@ for (const rule of rules) {
|
|||
"setext_with_atx_closed"
|
||||
],
|
||||
"default": "consistent"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD004":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "List style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -116,134 +124,141 @@ for (const rule of rules) {
|
|||
"sublist"
|
||||
],
|
||||
"default": "consistent"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD007":
|
||||
subscheme.properties = {
|
||||
"indent": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.indent = {
|
||||
"description": "Spaces for indent",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 2
|
||||
},
|
||||
"start_indented": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.start_indented = {
|
||||
"description": "Whether to indent the first level of the list",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"start_indent": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.start_indent = {
|
||||
"description":
|
||||
"Spaces for first level indent (when start_indented is set)",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 2
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD009":
|
||||
subscheme.properties = {
|
||||
"br_spaces": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.br_spaces = {
|
||||
"description": "Spaces for line break",
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"default": 2
|
||||
},
|
||||
"list_item_empty_lines": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.list_item_empty_lines = {
|
||||
"description": "Allow spaces for empty lines in list items",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"strict": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.strict = {
|
||||
"description": "Include unnecessary breaks",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD010":
|
||||
subscheme.properties = {
|
||||
"code_blocks": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.code_blocks = {
|
||||
"description": "Include code blocks",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"ignore_code_languages": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.ignore_code_languages = {
|
||||
"description": "Fenced code languages to ignore",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": []
|
||||
},
|
||||
"spaces_per_tab": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.spaces_per_tab = {
|
||||
"description": "Number of spaces for each hard tab",
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"default": 1
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD012":
|
||||
subscheme.properties = {
|
||||
"maximum": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.maximum = {
|
||||
"description": "Consecutive blank lines",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 1
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD013":
|
||||
subscheme.properties = {
|
||||
"line_length": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.line_length = {
|
||||
"description": "Number of characters",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 80
|
||||
},
|
||||
"heading_line_length": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.heading_line_length = {
|
||||
"description": "Number of characters for headings",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 80
|
||||
},
|
||||
"code_block_line_length": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.code_block_line_length = {
|
||||
"description": "Number of characters for code blocks",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 80
|
||||
},
|
||||
"code_blocks": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.code_blocks = {
|
||||
"description": "Include code blocks",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"tables": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.tables = {
|
||||
"description": "Include tables",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"headings": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.headings = {
|
||||
"description": "Include headings",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"strict": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.strict = {
|
||||
"description": "Strict length checking",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"stern": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.stern = {
|
||||
"description": "Stern length checking",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD022":
|
||||
subscheme.properties = {
|
||||
"lines_above": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.lines_above = {
|
||||
"description": "Blank lines above heading",
|
||||
"type": [
|
||||
"integer",
|
||||
|
|
@ -254,8 +269,9 @@ for (const rule of rules) {
|
|||
},
|
||||
"minimum": -1,
|
||||
"default": 1
|
||||
},
|
||||
"lines_below": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.lines_below = {
|
||||
"description": "Blank lines below heading",
|
||||
"type": [
|
||||
"integer",
|
||||
|
|
@ -266,40 +282,36 @@ for (const rule of rules) {
|
|||
},
|
||||
"minimum": -1,
|
||||
"default": 1
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD024":
|
||||
subscheme.properties = {
|
||||
"siblings_only": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.siblings_only = {
|
||||
"description": "Only check sibling headings",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD026":
|
||||
case "MD036":
|
||||
subscheme.properties = {
|
||||
"punctuation": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.punctuation = {
|
||||
"description": "Punctuation characters",
|
||||
"type": "string",
|
||||
"default": (ruleName === "MD026") ? ".,;:!。,;:!" : ".,;:!?。,;:!?"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD027":
|
||||
subscheme.properties = {
|
||||
"list_items": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.list_items = {
|
||||
"description": "Include list items",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD029":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "List style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -309,124 +321,119 @@ for (const rule of rules) {
|
|||
"zero"
|
||||
],
|
||||
"default": "one_or_ordered"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD030":
|
||||
subscheme.properties = {
|
||||
"ul_single": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.ul_single = {
|
||||
"description": "Spaces for single-line unordered list items",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 1
|
||||
},
|
||||
"ol_single": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.ol_single = {
|
||||
"description": "Spaces for single-line ordered list items",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 1
|
||||
},
|
||||
"ul_multi": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.ul_multi = {
|
||||
"description": "Spaces for multi-line unordered list items",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 1
|
||||
},
|
||||
"ol_multi": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.ol_multi = {
|
||||
"description": "Spaces for multi-line ordered list items",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 1
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD031":
|
||||
subscheme.properties = {
|
||||
"list_items": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.list_items = {
|
||||
"description": "Include list items",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD033":
|
||||
subscheme.properties = {
|
||||
"allowed_elements": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.allowed_elements = {
|
||||
"description": "Allowed elements",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": []
|
||||
},
|
||||
"table_allowed_elements": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.table_allowed_elements = {
|
||||
"description": "Allowed elements in tables",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": []
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD035":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "Horizontal rule style",
|
||||
"type": "string",
|
||||
"default": "consistent"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD040":
|
||||
subscheme.properties = {
|
||||
"allowed_languages": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.allowed_languages = {
|
||||
"description": "List of languages",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": []
|
||||
},
|
||||
"language_only": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.language_only = {
|
||||
"description": "Require language only",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD025":
|
||||
case "MD041":
|
||||
{
|
||||
const md041Properties = (ruleName === "MD041") ?
|
||||
{
|
||||
"allow_preamble": {
|
||||
if (ruleName === "MD041") {
|
||||
// @ts-ignore
|
||||
subscheme.properties.allow_preamble = {
|
||||
"description": "Allow content before first heading",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
};
|
||||
}
|
||||
} :
|
||||
{};
|
||||
subscheme.properties = {
|
||||
...md041Properties,
|
||||
"front_matter_title": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.front_matter_title = {
|
||||
"description": "RegExp for matching title in front matter",
|
||||
"type": "string",
|
||||
"default": "^\\s*title\\s*[:=]"
|
||||
},
|
||||
"level": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.level = {
|
||||
"description": "Heading level",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 6,
|
||||
"default": 1
|
||||
}
|
||||
};
|
||||
}
|
||||
break;
|
||||
case "MD043":
|
||||
subscheme.properties = {
|
||||
"headings": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.headings = {
|
||||
"description": "List of headings",
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -434,39 +441,40 @@ for (const rule of rules) {
|
|||
"pattern": "^(\\*|\\+|\\?|#{1,6}\\s+\\S.*)$"
|
||||
},
|
||||
"default": []
|
||||
},
|
||||
"match_case": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.match_case = {
|
||||
"description": "Match case of headings",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD044":
|
||||
subscheme.properties = {
|
||||
"names": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.names = {
|
||||
"description": "List of proper names",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": []
|
||||
},
|
||||
"code_blocks": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.code_blocks = {
|
||||
"description": "Include code blocks",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"html_elements": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.html_elements = {
|
||||
"description": "Include HTML elements",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD046":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "Block style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -475,12 +483,11 @@ for (const rule of rules) {
|
|||
"indented"
|
||||
],
|
||||
"default": "consistent"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD048":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "Code fence style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -489,13 +496,12 @@ for (const rule of rules) {
|
|||
"tilde"
|
||||
],
|
||||
"default": "consistent"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD049":
|
||||
case "MD050":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": (ruleName === "MD049") ? "Emphasis style" : "Strong style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -504,89 +510,91 @@ for (const rule of rules) {
|
|||
"underscore"
|
||||
],
|
||||
"default": "consistent"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD051":
|
||||
subscheme.properties = {
|
||||
"ignore_case": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.ignore_case = {
|
||||
"description": "Ignore case of fragments",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"ignored_pattern": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.ignored_pattern = {
|
||||
"description": "Pattern for ignoring additional fragments",
|
||||
"type": "string",
|
||||
"default": ""
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD052":
|
||||
subscheme.properties = {
|
||||
"ignored_labels": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.ignored_labels = {
|
||||
"description": "Ignored link labels",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": [ "x" ]
|
||||
},
|
||||
"shortcut_syntax": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.shortcut_syntax = {
|
||||
"description": "Include shortcut syntax",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD053":
|
||||
subscheme.properties = {
|
||||
"ignored_definitions": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.ignored_definitions = {
|
||||
"description": "Ignored definitions",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": [ "//" ]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD054":
|
||||
subscheme.properties = {
|
||||
"autolink": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.autolink = {
|
||||
"description": "Allow autolinks",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"inline": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.inline = {
|
||||
"description": "Allow inline links and images",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"full": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.full = {
|
||||
"description": "Allow full reference links and images",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"collapsed": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.collapsed = {
|
||||
"description": "Allow collapsed reference links and images",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"shortcut": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.shortcut = {
|
||||
"description": "Allow shortcut reference links and images",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"url_inline": {
|
||||
};
|
||||
// @ts-ignore
|
||||
subscheme.properties.url_inline = {
|
||||
"description": "Allow URLs as inline links",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD055":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "Table pipe style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -597,12 +605,11 @@ for (const rule of rules) {
|
|||
"no_leading_or_trailing"
|
||||
],
|
||||
"default": "consistent"
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD059":
|
||||
subscheme.properties = {
|
||||
"prohibited_texts": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.prohibited_texts = {
|
||||
"description": "Prohibited link texts",
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -614,12 +621,11 @@ for (const rule of rules) {
|
|||
"link",
|
||||
"more"
|
||||
]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case "MD060":
|
||||
subscheme.properties = {
|
||||
"style": {
|
||||
// @ts-ignore
|
||||
subscheme.properties.style = {
|
||||
"description": "Table column style",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
@ -629,16 +635,12 @@ for (const rule of rules) {
|
|||
"tight"
|
||||
],
|
||||
"default": "any"
|
||||
}
|
||||
};
|
||||
break;
|
||||
default:
|
||||
custom = false;
|
||||
break;
|
||||
}
|
||||
if (custom) {
|
||||
scheme.oneOf.push(subscheme);
|
||||
}
|
||||
/* eslint-enable camelcase */
|
||||
for (const name of rule.names) {
|
||||
schema.properties[name] = scheme;
|
||||
// Using $ref causes rule aliases not to get JSDoc comments
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
58
test/configure-file-with-severity.md
Normal file
58
test/configure-file-with-severity.md
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# Configure File With Severity
|
||||
|
||||
Text * text* {MD037}
|
||||
|
||||
Text ` text` {MD038}
|
||||
|
||||
Text [ text](.) {MD039}
|
||||
|
||||
+ List item {MD004}
|
||||
|
||||
Text (text)[.] {MD011}
|
||||
|
||||
2. List item {MD029}
|
||||
|
||||
<!-- markdownlint-disable -->
|
||||
|
||||
Text * text*
|
||||
|
||||
Text ` text`
|
||||
|
||||
Text [ text](.)
|
||||
|
||||
+ List item
|
||||
|
||||
Text (text)[.]
|
||||
|
||||
2. List item
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
|
||||
Text * text* {MD037}
|
||||
|
||||
Text ` text` {MD038}
|
||||
|
||||
Text [ text](.) {MD039}
|
||||
|
||||
+ List item {MD004}
|
||||
|
||||
Text (text)[.] {MD011}
|
||||
|
||||
2. List item {MD029}
|
||||
|
||||
<!-- markdownlint-configure-file {
|
||||
"default": false,
|
||||
"MD037": "error",
|
||||
"MD038": "error",
|
||||
"MD039": "error",
|
||||
"MD004": {
|
||||
"severity": "error",
|
||||
"style": "dash"
|
||||
},
|
||||
"MD011": {
|
||||
"severity": "error"
|
||||
},
|
||||
"MD029": {
|
||||
"severity": "error"
|
||||
}
|
||||
} -->
|
||||
|
|
@ -29,13 +29,14 @@ test("customRulesV0", (t) => new Promise((resolve) => {
|
|||
};
|
||||
lintAsync(options, function callback(err, actualResult) {
|
||||
t.falsy(err);
|
||||
const expectedResult = {};
|
||||
expectedResult[customRulesMd] = {
|
||||
const expectedResult = {
|
||||
[customRulesMd]: {
|
||||
"any-blockquote-markdown-it": [ 12 ],
|
||||
"any-blockquote-micromark": [ 12 ],
|
||||
"every-n-lines": [ 2, 4, 6, 10, 12 ],
|
||||
"first-line": [ 1 ],
|
||||
"letters-E-X": [ 3, 7 ]
|
||||
}
|
||||
};
|
||||
t.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
// @ts-ignore
|
||||
|
|
@ -103,8 +104,8 @@ test("customRulesV1", (t) => new Promise((resolve) => {
|
|||
};
|
||||
lintAsync(options, function callback(err, actualResult) {
|
||||
t.falsy(err);
|
||||
const expectedResult = {};
|
||||
expectedResult[customRulesMd] = [
|
||||
const expectedResult = {
|
||||
[customRulesMd]: [
|
||||
{ "lineNumber": 12,
|
||||
"ruleName": "any-blockquote-markdown-it",
|
||||
"ruleAlias": "any-blockquote-markdown-it",
|
||||
|
|
@ -189,7 +190,8 @@ test("customRulesV1", (t) => new Promise((resolve) => {
|
|||
"errorDetail": null,
|
||||
"errorContext": "text",
|
||||
"errorRange": null }
|
||||
];
|
||||
]
|
||||
};
|
||||
t.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
// @ts-ignore
|
||||
const actualMessage = actualResult.toString();
|
||||
|
|
@ -236,8 +238,8 @@ test("customRulesV2", (t) => new Promise((resolve) => {
|
|||
};
|
||||
lintAsync(options, function callback(err, actualResult) {
|
||||
t.falsy(err);
|
||||
const expectedResult = {};
|
||||
expectedResult[customRulesMd] = [
|
||||
const expectedResult = {
|
||||
[customRulesMd]: [
|
||||
{ "lineNumber": 12,
|
||||
"ruleNames": [ "any-blockquote-markdown-it" ],
|
||||
"ruleDescription": "Rule that reports an error for any blockquote",
|
||||
|
|
@ -312,7 +314,8 @@ test("customRulesV2", (t) => new Promise((resolve) => {
|
|||
"errorDetail": null,
|
||||
"errorContext": "text",
|
||||
"errorRange": null }
|
||||
];
|
||||
]
|
||||
};
|
||||
t.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
// @ts-ignore
|
||||
const actualMessage = actualResult.toString();
|
||||
|
|
@ -366,13 +369,14 @@ test("customRulesConfig", (t) => new Promise((resolve) => {
|
|||
};
|
||||
lintAsync(options, function callback(err, actualResult) {
|
||||
t.falsy(err);
|
||||
const expectedResult = {};
|
||||
expectedResult[customRulesMd] = {
|
||||
const expectedResult = {
|
||||
[customRulesMd]: {
|
||||
"any-blockquote-markdown-it": [ 12 ],
|
||||
"any-blockquote-micromark": [ 12 ],
|
||||
"every-n-lines": [ 3, 6, 12 ],
|
||||
"first-line": [ 1 ],
|
||||
"letters-E-X": [ 7 ]
|
||||
}
|
||||
};
|
||||
t.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
resolve();
|
||||
|
|
@ -445,6 +449,7 @@ test("customRulesBadProperty", (t) => {
|
|||
const { propertyName, propertyValues } = testCase;
|
||||
for (const propertyValue of propertyValues) {
|
||||
const badRule = { ...customRules.firstLine };
|
||||
// @ts-ignore
|
||||
badRule[propertyName] = propertyValue;
|
||||
/** @type {import("markdownlint").Options} */
|
||||
const options = {
|
||||
|
|
@ -1211,6 +1216,7 @@ test("customRulesOnErrorBad", (t) => {
|
|||
]) {
|
||||
const { propertyName, subPropertyName, propertyValues } = testCase;
|
||||
for (const propertyValue of propertyValues) {
|
||||
/** @type {Object<string, any>} */
|
||||
const badObject = {
|
||||
"lineNumber": 1
|
||||
};
|
||||
|
|
@ -1232,6 +1238,7 @@ test("customRulesOnErrorBad", (t) => {
|
|||
"tags": [ "tag" ],
|
||||
"parser": "none",
|
||||
"function": function onErrorBad(params, onError) {
|
||||
// @ts-ignore
|
||||
onError(badObject);
|
||||
}
|
||||
}
|
||||
|
|
@ -1283,6 +1290,7 @@ test("customRulesOnErrorInvalid", (t) => {
|
|||
]) {
|
||||
const { propertyName, subPropertyName, propertyValues } = testCase;
|
||||
for (const propertyValue of propertyValues) {
|
||||
/** @type {Object<string, any>} */
|
||||
const badObject = {
|
||||
"lineNumber": 1
|
||||
};
|
||||
|
|
@ -1304,6 +1312,7 @@ test("customRulesOnErrorInvalid", (t) => {
|
|||
"tags": [ "tag" ],
|
||||
"parser": "none",
|
||||
"function": function onErrorInvalid(params, onError) {
|
||||
// @ts-ignore
|
||||
onError(badObject);
|
||||
}
|
||||
}
|
||||
|
|
@ -1361,6 +1370,7 @@ test("customRulesOnErrorValid", (t) => {
|
|||
]) {
|
||||
const { propertyName, subPropertyName, propertyValues } = testCase;
|
||||
for (const propertyValue of propertyValues) {
|
||||
/** @type {Object<string, any>} */
|
||||
const goodObject = {
|
||||
"lineNumber": 1
|
||||
};
|
||||
|
|
@ -1379,6 +1389,7 @@ test("customRulesOnErrorValid", (t) => {
|
|||
"tags": [ "tag" ],
|
||||
"parser": "none",
|
||||
"function": function onErrorValid(params, onError) {
|
||||
// @ts-ignore
|
||||
onError(goodObject);
|
||||
}
|
||||
}
|
||||
|
|
@ -1973,13 +1984,62 @@ test("customRulesAsyncThrowsInSyncContext", (t) => {
|
|||
);
|
||||
});
|
||||
|
||||
test("customRulesParamsConfigExcludesSeverity", (t) => {
|
||||
t.plan(4);
|
||||
/** @type {import("markdownlint").Rule} */
|
||||
const ruleBase = {
|
||||
"names": [ "tbd" ],
|
||||
"description": "description",
|
||||
"tags": [ "tag" ],
|
||||
"parser": "none",
|
||||
"asynchronous": true,
|
||||
"function": ({ config }) => {
|
||||
t.is(typeof config, "object");
|
||||
t.is(typeof config.severity, "undefined");
|
||||
}
|
||||
};
|
||||
/** @type {import("markdownlint").Options} */
|
||||
const options = {
|
||||
"config": {
|
||||
"name1": {
|
||||
"severity": "error"
|
||||
},
|
||||
"name2": {
|
||||
"key": "value",
|
||||
"severity": "error"
|
||||
}
|
||||
},
|
||||
"customRules": [
|
||||
{
|
||||
...ruleBase,
|
||||
"names": [ "name1" ]
|
||||
},
|
||||
{
|
||||
...ruleBase,
|
||||
"names": [ "name2" ]
|
||||
}
|
||||
],
|
||||
"strings": {
|
||||
"string": "Unused"
|
||||
}
|
||||
};
|
||||
return lintPromise(options);
|
||||
});
|
||||
|
||||
test("customRulesParamsAreFrozen", (t) => {
|
||||
/**
|
||||
* Asserts that rule parameters are frozen.
|
||||
*
|
||||
* @param {import("markdownlint").RuleParams} params Rule parameters.
|
||||
* @returns {void}
|
||||
*/
|
||||
const assertParamsFrozen = (params) => {
|
||||
const pending = [ params ];
|
||||
let current = null;
|
||||
while ((current = pending.shift())) {
|
||||
t.true(Object.isFrozen(current) || (current === params));
|
||||
for (const name of Object.getOwnPropertyNames(current)) {
|
||||
// @ts-ignore
|
||||
const value = current[name];
|
||||
if (
|
||||
value &&
|
||||
|
|
|
|||
|
|
@ -346,17 +346,104 @@ test("enableRulesString", getConfigTestImplementation(
|
|||
configTestExpected3511
|
||||
));
|
||||
|
||||
test("enableRulesEmptyObject", getConfigTestImplementation(
|
||||
test("enableRulesObjectEmpty", getConfigTestImplementation(
|
||||
{
|
||||
"MD041": {},
|
||||
"default": false,
|
||||
// @ts-ignore
|
||||
"no-multiple-space-atx": {},
|
||||
"extra": {}
|
||||
},
|
||||
configTestExpected3511
|
||||
));
|
||||
|
||||
test("enableRulesObjectTruthy", getConfigTestImplementation(
|
||||
{
|
||||
"MD041": {
|
||||
// @ts-ignore
|
||||
"severity": 1
|
||||
},
|
||||
"default": false,
|
||||
"no-multiple-space-atx": {
|
||||
// @ts-ignore
|
||||
"severity": 1
|
||||
},
|
||||
"extra": {
|
||||
"severity": 1
|
||||
}
|
||||
},
|
||||
configTestExpected3511
|
||||
));
|
||||
|
||||
test("enableRulesObjectFalsy", getConfigTestImplementation(
|
||||
{
|
||||
"MD041": {
|
||||
// @ts-ignore
|
||||
"severity": 0
|
||||
},
|
||||
"default": false,
|
||||
"no-multiple-space-atx": {
|
||||
// @ts-ignore
|
||||
"severity": 0
|
||||
},
|
||||
"extra": {
|
||||
"severity": 0
|
||||
}
|
||||
},
|
||||
configTestExpected3511
|
||||
));
|
||||
|
||||
test("enableRulesObjectError", getConfigTestImplementation(
|
||||
{
|
||||
"MD041": {
|
||||
"severity": "error"
|
||||
},
|
||||
"default": false,
|
||||
"no-multiple-space-atx": {
|
||||
"severity": "error"
|
||||
},
|
||||
"extra": {
|
||||
"severity": "error"
|
||||
}
|
||||
},
|
||||
configTestExpected3511
|
||||
));
|
||||
|
||||
test("enableRulesObjectWarning", getConfigTestImplementation(
|
||||
{
|
||||
"MD041": {
|
||||
// @ts-ignore
|
||||
"severity": "warning"
|
||||
},
|
||||
"default": false,
|
||||
"no-multiple-space-atx": {
|
||||
// @ts-ignore
|
||||
"severity": "warning"
|
||||
},
|
||||
"extra": {
|
||||
"severity": "warning"
|
||||
}
|
||||
},
|
||||
configTestExpected3511
|
||||
));
|
||||
|
||||
test("enableRulesObjectOff", getConfigTestImplementation(
|
||||
{
|
||||
"MD041": {
|
||||
// @ts-ignore
|
||||
"severity": "off"
|
||||
},
|
||||
"default": false,
|
||||
"no-multiple-space-atx": {
|
||||
// @ts-ignore
|
||||
"severity": "off"
|
||||
},
|
||||
"extra": {
|
||||
"severity": "off"
|
||||
}
|
||||
},
|
||||
configTestExpected3511
|
||||
));
|
||||
|
||||
test("disableTag", getConfigTestImplementation(
|
||||
{
|
||||
"default": true,
|
||||
|
|
@ -921,7 +1008,7 @@ test("readme", async(t) => {
|
|||
});
|
||||
|
||||
test("validateJsonUsingConfigSchemaStrict", async(t) => {
|
||||
t.plan(211);
|
||||
t.plan(212);
|
||||
// @ts-ignore
|
||||
const ajv = new Ajv(ajvOptions);
|
||||
const validateSchemaStrict = ajv.compile(configSchemaStrict);
|
||||
|
|
|
|||
|
|
@ -11203,6 +11203,320 @@ Generated by [AVA](https://avajs.dev).
|
|||
`,
|
||||
}
|
||||
|
||||
## configure-file-with-severity.md
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
{
|
||||
errors: [
|
||||
{
|
||||
errorContext: null,
|
||||
errorDetail: 'Expected: dash; Actual: plus',
|
||||
errorRange: [
|
||||
1,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 1,
|
||||
insertText: '-',
|
||||
},
|
||||
lineNumber: 9,
|
||||
ruleDescription: 'Unordered list style',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md004.md',
|
||||
ruleNames: [
|
||||
'MD004',
|
||||
'ul-style',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: null,
|
||||
errorDetail: 'Expected: dash; Actual: plus',
|
||||
errorRange: [
|
||||
1,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 1,
|
||||
insertText: '-',
|
||||
},
|
||||
lineNumber: 37,
|
||||
ruleDescription: 'Unordered list style',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md004.md',
|
||||
ruleNames: [
|
||||
'MD004',
|
||||
'ul-style',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: null,
|
||||
errorDetail: '(text)[.]',
|
||||
errorRange: [
|
||||
6,
|
||||
9,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 9,
|
||||
editColumn: 6,
|
||||
insertText: '[text](.)',
|
||||
},
|
||||
lineNumber: 11,
|
||||
ruleDescription: 'Reversed link syntax',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md011.md',
|
||||
ruleNames: [
|
||||
'MD011',
|
||||
'no-reversed-links',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: null,
|
||||
errorDetail: '(text)[.]',
|
||||
errorRange: [
|
||||
6,
|
||||
9,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 9,
|
||||
editColumn: 6,
|
||||
insertText: '[text](.)',
|
||||
},
|
||||
lineNumber: 39,
|
||||
ruleDescription: 'Reversed link syntax',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md011.md',
|
||||
ruleNames: [
|
||||
'MD011',
|
||||
'no-reversed-links',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: null,
|
||||
errorDetail: 'Expected: 1; Actual: 2; Style: 1/1/1',
|
||||
errorRange: [
|
||||
1,
|
||||
3,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 1,
|
||||
insertText: '1',
|
||||
},
|
||||
lineNumber: 13,
|
||||
ruleDescription: 'Ordered list item prefix',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md029.md',
|
||||
ruleNames: [
|
||||
'MD029',
|
||||
'ol-prefix',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: null,
|
||||
errorDetail: 'Expected: 1; Actual: 2; Style: 1/1/1',
|
||||
errorRange: [
|
||||
1,
|
||||
3,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 1,
|
||||
insertText: '1',
|
||||
},
|
||||
lineNumber: 41,
|
||||
ruleDescription: 'Ordered list item prefix',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md029.md',
|
||||
ruleNames: [
|
||||
'MD029',
|
||||
'ol-prefix',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: '* t',
|
||||
errorDetail: null,
|
||||
errorRange: [
|
||||
7,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 7,
|
||||
},
|
||||
lineNumber: 3,
|
||||
ruleDescription: 'Spaces inside emphasis markers',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md037.md',
|
||||
ruleNames: [
|
||||
'MD037',
|
||||
'no-space-in-emphasis',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: '* t',
|
||||
errorDetail: null,
|
||||
errorRange: [
|
||||
7,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 7,
|
||||
},
|
||||
lineNumber: 31,
|
||||
ruleDescription: 'Spaces inside emphasis markers',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md037.md',
|
||||
ruleNames: [
|
||||
'MD037',
|
||||
'no-space-in-emphasis',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: '` text`',
|
||||
errorDetail: null,
|
||||
errorRange: [
|
||||
7,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 7,
|
||||
},
|
||||
lineNumber: 5,
|
||||
ruleDescription: 'Spaces inside code span elements',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md038.md',
|
||||
ruleNames: [
|
||||
'MD038',
|
||||
'no-space-in-code',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: '` text`',
|
||||
errorDetail: null,
|
||||
errorRange: [
|
||||
7,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 7,
|
||||
},
|
||||
lineNumber: 33,
|
||||
ruleDescription: 'Spaces inside code span elements',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md038.md',
|
||||
ruleNames: [
|
||||
'MD038',
|
||||
'no-space-in-code',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: '[ text]',
|
||||
errorDetail: null,
|
||||
errorRange: [
|
||||
7,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 7,
|
||||
},
|
||||
lineNumber: 7,
|
||||
ruleDescription: 'Spaces inside link text',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md039.md',
|
||||
ruleNames: [
|
||||
'MD039',
|
||||
'no-space-in-links',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
{
|
||||
errorContext: '[ text]',
|
||||
errorDetail: null,
|
||||
errorRange: [
|
||||
7,
|
||||
1,
|
||||
],
|
||||
fixInfo: {
|
||||
deleteCount: 1,
|
||||
editColumn: 7,
|
||||
},
|
||||
lineNumber: 35,
|
||||
ruleDescription: 'Spaces inside link text',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md039.md',
|
||||
ruleNames: [
|
||||
'MD039',
|
||||
'no-space-in-links',
|
||||
],
|
||||
severity: 'error',
|
||||
},
|
||||
],
|
||||
fixed: `# Configure File With Severity␊
|
||||
␊
|
||||
Text *text* {MD037}␊
|
||||
␊
|
||||
Text \`text\` {MD038}␊
|
||||
␊
|
||||
Text [text](.) {MD039}␊
|
||||
␊
|
||||
- List item {MD004}␊
|
||||
␊
|
||||
Text [text](.) {MD011}␊
|
||||
␊
|
||||
1. List item {MD029}␊
|
||||
␊
|
||||
<!-- markdownlint-disable -->␊
|
||||
␊
|
||||
Text * text*␊
|
||||
␊
|
||||
Text \` text\`␊
|
||||
␊
|
||||
Text [ text](.)␊
|
||||
␊
|
||||
+ List item␊
|
||||
␊
|
||||
Text (text)[.]␊
|
||||
␊
|
||||
2. List item␊
|
||||
␊
|
||||
<!-- markdownlint-restore -->␊
|
||||
␊
|
||||
Text *text* {MD037}␊
|
||||
␊
|
||||
Text \`text\` {MD038}␊
|
||||
␊
|
||||
Text [text](.) {MD039}␊
|
||||
␊
|
||||
- List item {MD004}␊
|
||||
␊
|
||||
Text [text](.) {MD011}␊
|
||||
␊
|
||||
1. List item {MD029}␊
|
||||
␊
|
||||
<!-- markdownlint-configure-file {␊
|
||||
"default": false,␊
|
||||
"MD037": "error",␊
|
||||
"MD038": "error",␊
|
||||
"MD039": "error",␊
|
||||
"MD004": {␊
|
||||
"severity": "error",␊
|
||||
"style": "dash"␊
|
||||
},␊
|
||||
"MD011": {␊
|
||||
"severity": "error"␊
|
||||
},␊
|
||||
"MD029": {␊
|
||||
"severity": "error"␊
|
||||
}␊
|
||||
} -->␊
|
||||
`,
|
||||
}
|
||||
|
||||
## consecutive_blank_lines.md
|
||||
|
||||
> Snapshot 1
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue