mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-21 21:30:47 +02:00
Update MD022/blanks-around-headings to allow passing -1 for lines_above/lines_below to allow any number of blank lines in that direction (fixes #546).
This commit is contained in:
parent
f079df140c
commit
809841098d
12 changed files with 273 additions and 58 deletions
|
@ -4177,6 +4177,9 @@ module.exports = {
|
|||
var startLine = heading.startLine,
|
||||
endLine = heading.endLine;
|
||||
var line = lines[startLine - 1].trim();
|
||||
|
||||
// Check lines above
|
||||
if (linesAbove >= 0) {
|
||||
var actualAbove = 0;
|
||||
for (var i = 0; i < linesAbove; i++) {
|
||||
if (isBlankLine(lines[startLine - 2 - i])) {
|
||||
|
@ -4186,6 +4189,10 @@ module.exports = {
|
|||
addErrorDetailIf(onError, startLine, linesAbove, actualAbove, "Above", line, null, {
|
||||
"insertText": getBlockQuote(lines[startLine - 2], linesAbove - actualAbove)
|
||||
});
|
||||
}
|
||||
|
||||
// Check lines below
|
||||
if (linesBelow >= 0) {
|
||||
var actualBelow = 0;
|
||||
for (var _i = 0; _i < linesBelow; _i++) {
|
||||
if (isBlankLine(lines[endLine + _i])) {
|
||||
|
@ -4197,6 +4204,7 @@ module.exports = {
|
|||
"insertText": getBlockQuote(lines[endLine], linesBelow - actualBelow)
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
_iterator.e(err);
|
||||
} finally {
|
||||
|
|
|
@ -23,7 +23,9 @@ Some more text
|
|||
```
|
||||
|
||||
The `lines_above` and `lines_below` parameters can be used to specify a
|
||||
different number of blank lines (including 0) above or below each heading.
|
||||
different number of blank lines (including `0`) above or below each heading. If
|
||||
the value `-1` is used for either parameter, any number of blank lines is
|
||||
allowed.
|
||||
|
||||
Note: If `lines_above` or `lines_below` are configured to require more than one
|
||||
blank line, [MD012/no-multiple-blanks](md012.md) should also be customized.
|
||||
|
|
|
@ -836,7 +836,9 @@ Some more text
|
|||
```
|
||||
|
||||
The `lines_above` and `lines_below` parameters can be used to specify a
|
||||
different number of blank lines (including 0) above or below each heading.
|
||||
different number of blank lines (including `0`) above or below each heading. If
|
||||
the value `-1` is used for either parameter, any number of blank lines is
|
||||
allowed.
|
||||
|
||||
Note: If `lines_above` or `lines_below` are configured to require more than one
|
||||
blank line, [MD012/no-multiple-blanks](md012.md) should also be customized.
|
||||
|
|
|
@ -36,7 +36,9 @@ Some more text
|
|||
```
|
||||
|
||||
The `lines_above` and `lines_below` parameters can be used to specify a
|
||||
different number of blank lines (including 0) above or below each heading.
|
||||
different number of blank lines (including `0`) above or below each heading. If
|
||||
the value `-1` is used for either parameter, any number of blank lines is
|
||||
allowed.
|
||||
|
||||
Note: If `lines_above` or `lines_below` are configured to require more than one
|
||||
blank line, [MD012/no-multiple-blanks](md012.md) should also be customized.
|
||||
|
|
|
@ -32,6 +32,9 @@ module.exports = {
|
|||
for (const heading of headings) {
|
||||
const { startLine, endLine } = heading;
|
||||
const line = lines[startLine - 1].trim();
|
||||
|
||||
// Check lines above
|
||||
if (linesAbove >= 0) {
|
||||
let actualAbove = 0;
|
||||
for (let i = 0; i < linesAbove; i++) {
|
||||
if (isBlankLine(lines[startLine - 2 - i])) {
|
||||
|
@ -51,6 +54,10 @@ module.exports = {
|
|||
getBlockQuote(lines[startLine - 2], linesAbove - actualAbove)
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// Check lines below
|
||||
if (linesBelow >= 0) {
|
||||
let actualBelow = 0;
|
||||
for (let i = 0; i < linesBelow; i++) {
|
||||
if (isBlankLine(lines[endLine + i])) {
|
||||
|
@ -73,4 +80,5 @@ module.exports = {
|
|||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -230,13 +230,13 @@ for (const rule of rules) {
|
|||
"lines_above": {
|
||||
"description": "Blank lines above heading",
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"minimum": -1,
|
||||
"default": 1
|
||||
},
|
||||
"lines_below": {
|
||||
"description": "Blank lines below heading",
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"minimum": -1,
|
||||
"default": 1
|
||||
}
|
||||
};
|
||||
|
|
|
@ -362,13 +362,13 @@
|
|||
"lines_above": {
|
||||
"description": "Blank lines above heading",
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"minimum": -1,
|
||||
"default": 1
|
||||
},
|
||||
"lines_below": {
|
||||
"description": "Blank lines below heading",
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"minimum": -1,
|
||||
"default": 1
|
||||
}
|
||||
},
|
||||
|
|
33
test/blanks-around-headings--1-1.md
Normal file
33
test/blanks-around-headings--1-1.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Blanks Around Headings
|
||||
|
||||
## Apple
|
||||
|
||||
Text
|
||||
## Banana
|
||||
|
||||
Text
|
||||
|
||||
## Cherry
|
||||
|
||||
Text
|
||||
|
||||
|
||||
## Durian ##
|
||||
|
||||
Text
|
||||
|
||||
Elderberry {MD022}
|
||||
------------------
|
||||
Text
|
||||
|
||||
---
|
||||
## Fig
|
||||
|
||||
<!-- markdownlint-configure-file {
|
||||
"heading-style": false,
|
||||
"no-multiple-blanks": false,
|
||||
"blanks-around-headings": {
|
||||
"lines_above": -1,
|
||||
"lines_below": 1
|
||||
}
|
||||
} -->
|
35
test/blanks-around-headings-1--1.md
Normal file
35
test/blanks-around-headings-1--1.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Blanks Around Headings
|
||||
|
||||
## Apple
|
||||
Text
|
||||
|
||||
## Banana
|
||||
|
||||
Text
|
||||
|
||||
## Cherry
|
||||
|
||||
|
||||
Text
|
||||
|
||||
---
|
||||
## Durian {MD022} ##
|
||||
|
||||
Text
|
||||
|
||||
---
|
||||
|
||||
Elderberry
|
||||
------------------
|
||||
Text
|
||||
|
||||
## Fig
|
||||
|
||||
<!-- markdownlint-configure-file {
|
||||
"heading-style": false,
|
||||
"no-multiple-blanks": false,
|
||||
"blanks-around-headings": {
|
||||
"lines_above": 1,
|
||||
"lines_below": -1
|
||||
}
|
||||
} -->
|
|
@ -919,7 +919,7 @@ test("readme", (t) => new Promise((resolve) => {
|
|||
}));
|
||||
|
||||
test("validateJsonUsingConfigSchemaStrict", (t) => {
|
||||
t.plan(156);
|
||||
t.plan(158);
|
||||
const configRe =
|
||||
/^[\s\S]*<!-- markdownlint-configure-file ([\s\S]*) -->[\s\S]*$/;
|
||||
const ignoreFiles = new Set([
|
||||
|
|
|
@ -4173,6 +4173,68 @@ Generated by [AVA](https://avajs.dev).
|
|||
`,
|
||||
}
|
||||
|
||||
## blanks-around-headings--1-1.md
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
{
|
||||
errors: [
|
||||
{
|
||||
errorContext: 'Elderberry {MD022}',
|
||||
errorDetail: 'Expected: 1; Actual: 0; Below',
|
||||
errorRange: null,
|
||||
fixInfo: {
|
||||
insertText: `␊
|
||||
`,
|
||||
lineNumber: 21,
|
||||
},
|
||||
lineNumber: 19,
|
||||
ruleDescription: 'Headings should be surrounded by blank lines',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md022.md',
|
||||
ruleNames: [
|
||||
'MD022',
|
||||
'blanks-around-headings',
|
||||
'blanks-around-headers',
|
||||
],
|
||||
},
|
||||
],
|
||||
fixed: `# Blanks Around Headings␊
|
||||
␊
|
||||
## Apple␊
|
||||
␊
|
||||
Text␊
|
||||
## Banana␊
|
||||
␊
|
||||
Text␊
|
||||
␊
|
||||
## Cherry␊
|
||||
␊
|
||||
Text␊
|
||||
␊
|
||||
␊
|
||||
## Durian ##␊
|
||||
␊
|
||||
Text␊
|
||||
␊
|
||||
Elderberry {MD022}␊
|
||||
------------------␊
|
||||
␊
|
||||
Text␊
|
||||
␊
|
||||
---␊
|
||||
## Fig␊
|
||||
␊
|
||||
<!-- markdownlint-configure-file {␊
|
||||
"heading-style": false,␊
|
||||
"no-multiple-blanks": false,␊
|
||||
"blanks-around-headings": {␊
|
||||
"lines_above": -1,␊
|
||||
"lines_below": 1␊
|
||||
}␊
|
||||
} -->␊
|
||||
`,
|
||||
}
|
||||
|
||||
## blanks-around-headings-0-2.md
|
||||
|
||||
> Snapshot 1
|
||||
|
@ -4256,6 +4318,69 @@ Generated by [AVA](https://avajs.dev).
|
|||
`,
|
||||
}
|
||||
|
||||
## blanks-around-headings-1--1.md
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
{
|
||||
errors: [
|
||||
{
|
||||
errorContext: '## Durian {MD022} ##',
|
||||
errorDetail: 'Expected: 1; Actual: 0; Above',
|
||||
errorRange: null,
|
||||
fixInfo: {
|
||||
insertText: `␊
|
||||
`,
|
||||
},
|
||||
lineNumber: 16,
|
||||
ruleDescription: 'Headings should be surrounded by blank lines',
|
||||
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md022.md',
|
||||
ruleNames: [
|
||||
'MD022',
|
||||
'blanks-around-headings',
|
||||
'blanks-around-headers',
|
||||
],
|
||||
},
|
||||
],
|
||||
fixed: `# Blanks Around Headings␊
|
||||
␊
|
||||
## Apple␊
|
||||
Text␊
|
||||
␊
|
||||
## Banana␊
|
||||
␊
|
||||
Text␊
|
||||
␊
|
||||
## Cherry␊
|
||||
␊
|
||||
␊
|
||||
Text␊
|
||||
␊
|
||||
---␊
|
||||
␊
|
||||
## Durian {MD022} ##␊
|
||||
␊
|
||||
Text␊
|
||||
␊
|
||||
---␊
|
||||
␊
|
||||
Elderberry␊
|
||||
------------------␊
|
||||
Text␊
|
||||
␊
|
||||
## Fig␊
|
||||
␊
|
||||
<!-- markdownlint-configure-file {␊
|
||||
"heading-style": false,␊
|
||||
"no-multiple-blanks": false,␊
|
||||
"blanks-around-headings": {␊
|
||||
"lines_above": 1,␊
|
||||
"lines_below": -1␊
|
||||
}␊
|
||||
} -->␊
|
||||
`,
|
||||
}
|
||||
|
||||
## blanks-around-headings-3-0.md
|
||||
|
||||
> Snapshot 1
|
||||
|
|
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue