mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 06:20:12 +01:00
Update MD038/no-space-in-code to allow the "single leading and trailing space" scenario (fixes #271).
This commit is contained in:
parent
6ce426cf88
commit
65b19b703b
8 changed files with 102 additions and 79 deletions
13
doc/Rules.md
13
doc/Rules.md
|
|
@ -1401,23 +1401,28 @@ Tags: whitespace, code
|
||||||
|
|
||||||
Aliases: no-space-in-code
|
Aliases: no-space-in-code
|
||||||
|
|
||||||
This rule is triggered on code span elements that have spaces right inside the
|
This rule is triggered for code span elements that have spaces adjacent to the
|
||||||
backticks:
|
backticks:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
` some text `
|
|
||||||
|
|
||||||
`some text `
|
`some text `
|
||||||
|
|
||||||
` some text`
|
` some text`
|
||||||
```
|
```
|
||||||
|
|
||||||
To fix this, remove the spaces inside the codespan markers:
|
To fix this, remove any spaces adjacent to the backticks:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
`some text`
|
`some text`
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Note: A single leading and trailing space is allowed by the specification and
|
||||||
|
automatically trimmed (to allow for embedded backticks):
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
`` `backticks` ``
|
||||||
|
```
|
||||||
|
|
||||||
Note: A single leading or trailing space is allowed if used to separate codespan
|
Note: A single leading or trailing space is allowed if used to separate codespan
|
||||||
markers from an embedded backtick:
|
markers from an embedded backtick:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ const { addErrorContext, filterTokens, forEachInlineCodeSpan, newLineRe } =
|
||||||
|
|
||||||
const leftSpaceRe = /^\s([^`]|$)/;
|
const leftSpaceRe = /^\s([^`]|$)/;
|
||||||
const rightSpaceRe = /[^`]\s$/;
|
const rightSpaceRe = /[^`]\s$/;
|
||||||
|
const singleLeftRightSpaceRe = /^\s\S+\s$/;
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
"names": [ "MD038", "no-space-in-code" ],
|
"names": [ "MD038", "no-space-in-code" ],
|
||||||
|
|
@ -32,7 +33,8 @@ module.exports = {
|
||||||
rangeLineOffset = codeLines.length - 1;
|
rangeLineOffset = codeLines.length - 1;
|
||||||
fixIndex = 0;
|
fixIndex = 0;
|
||||||
}
|
}
|
||||||
if (left || right) {
|
const allowed = singleLeftRightSpaceRe.test(code);
|
||||||
|
if ((left || right) && !allowed) {
|
||||||
const codeLinesRange = codeLines[rangeLineOffset];
|
const codeLinesRange = codeLines[rangeLineOffset];
|
||||||
if (codeLines.length > 1) {
|
if (codeLines.length > 1) {
|
||||||
rangeLength = codeLinesRange.length + tickCount;
|
rangeLength = codeLinesRange.length + tickCount;
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,14 @@ Bare https://example.com link
|
||||||
|
|
||||||
Space * inside * emphasis
|
Space * inside * emphasis
|
||||||
|
|
||||||
Space ` inside ` code span
|
Space ` inside` code span
|
||||||
|
|
||||||
Space [ inside ](link) text
|
Space [ inside ](link) text
|
||||||
|
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
|
|
||||||
space `` inside `` code
|
space `` inside`` code
|
||||||
space `inside` of ` code` elements
|
space `inside` of ` code` elements
|
||||||
`space` inside `of` code ` elements`
|
`space` inside `of` code ` elements`
|
||||||
space ``inside`` of `` code`` elements
|
space ``inside`` of `` code`` elements
|
||||||
|
|
|
||||||
|
|
@ -122,8 +122,8 @@
|
||||||
"ruleDescription": "Spaces inside code span elements",
|
"ruleDescription": "Spaces inside code span elements",
|
||||||
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md038",
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md038",
|
||||||
"errorDetail": null,
|
"errorDetail": null,
|
||||||
"errorContext": "` inside `",
|
"errorContext": "` inside`",
|
||||||
"errorRange": [ 7, 10 ]
|
"errorRange": [ 7, 9 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"lineNumber": 24,
|
"lineNumber": 24,
|
||||||
|
|
@ -131,8 +131,8 @@
|
||||||
"ruleDescription": "Spaces inside code span elements",
|
"ruleDescription": "Spaces inside code span elements",
|
||||||
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md038",
|
"ruleInformation": "https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md038",
|
||||||
"errorDetail": null,
|
"errorDetail": null,
|
||||||
"errorContext": "`` inside ``",
|
"errorContext": "`` inside``",
|
||||||
"errorRange": [ 7, 12 ]
|
"errorRange": [ 7, 11 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"lineNumber": 25,
|
"lineNumber": 25,
|
||||||
|
|
|
||||||
|
|
@ -1,118 +1,118 @@
|
||||||
# Inline Capture/Restore
|
# Inline Capture/Restore
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable -->
|
<!-- markdownlint-disable -->
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable no-space-in-emphasis -->
|
<!-- markdownlint-disable no-space-in-emphasis -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable -->
|
<!-- markdownlint-disable -->
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable no-space-in-emphasis -->
|
<!-- markdownlint-disable no-space-in-emphasis -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-capture -->
|
<!-- markdownlint-capture -->
|
||||||
<!-- markdownlint-disable -->
|
<!-- markdownlint-disable -->
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-enable no-hard-tabs -->
|
<!-- markdownlint-enable no-hard-tabs -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-enable no-hard-tabs -->
|
<!-- markdownlint-enable no-hard-tabs -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-capture -->
|
<!-- markdownlint-capture -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-enable -->
|
<!-- markdownlint-enable -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable no-space-in-code -->
|
<!-- markdownlint-disable no-space-in-code -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
|
|
||||||
<!-- markdownlint-capture --><!-- markdownlint-disable -->
|
<!-- markdownlint-capture --><!-- markdownlint-disable -->
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
|
|
||||||
<!-- markdownlint-disable no-hard-tabs -->
|
<!-- markdownlint-disable no-hard-tabs -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
space * in * emphasis
|
space *in * emphasis
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
|
|
||||||
<!-- markdownlint-restore --> <!-- markdownlint-enable no-space-in-emphasis -->
|
<!-- markdownlint-restore --> <!-- markdownlint-enable no-space-in-emphasis -->
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,31 @@
|
||||||
|
|
||||||
hard tab {MD010}
|
hard tab {MD010}
|
||||||
|
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
|
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
|
|
||||||
<!-- markdownlint-disable no-hard-tabs -->
|
<!-- markdownlint-disable no-hard-tabs -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
|
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
|
|
||||||
space ` in ` code
|
space `in ` code
|
||||||
|
|
||||||
<!-- markdownlint-enable no-space-in-code -->
|
<!-- markdownlint-enable no-space-in-code -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
|
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
|
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-enable-file no-hard-tabs -->
|
<!-- markdownlint-enable-file no-hard-tabs -->
|
||||||
<!-- markdownlint-disable-file no-space-in-code -->
|
<!-- markdownlint-disable-file no-space-in-code -->
|
||||||
|
|
||||||
hard tab
|
hard tab
|
||||||
|
|
||||||
space * in * emphasis {MD037}
|
space *in * emphasis {MD037}
|
||||||
|
|
||||||
space ` in ` code {MD038}
|
space `in ` code {MD038}
|
||||||
|
|
|
||||||
|
|
@ -1,69 +1,69 @@
|
||||||
# Heading
|
# Heading
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable-->
|
<!-- markdownlint-disable-->
|
||||||
|
|
||||||
hard tab / space * in * emphasis / space ` in ` code
|
hard tab / space *in * emphasis / space `in ` code
|
||||||
|
|
||||||
<!--MARKDOWNLINT-ENABLE -->
|
<!--MARKDOWNLINT-ENABLE -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable MD010-->
|
<!-- markdownlint-disable MD010-->
|
||||||
|
|
||||||
hard tab / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-ENABLE MD010 -->
|
<!-- markdownlint-ENABLE MD010 -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable MD010 MD038 -->
|
<!-- markdownlint-disable MD010 MD038 -->
|
||||||
|
|
||||||
hard tab / space * in * emphasis {MD037} / space ` in ` code
|
hard tab / space *in * emphasis {MD037} / space `in ` code
|
||||||
|
|
||||||
<!-- MARKDOWNLINT-enable MD010 MD038 -->
|
<!-- MARKDOWNLINT-enable MD010 MD038 -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
before <!-- markdownlint-disable MD010 --> <!-- markdownlint-disable MD038 --> after
|
before <!-- markdownlint-disable MD010 --> <!-- markdownlint-disable MD038 --> after
|
||||||
|
|
||||||
hard tab / space * in * emphasis {MD037} / space ` in ` code
|
hard tab / space *in * emphasis {MD037} / space `in ` code
|
||||||
|
|
||||||
before<!-- markdownlint-enable MD010 --><!-- markdownlint-enable MD038 -->after
|
before<!-- markdownlint-enable MD010 --><!-- markdownlint-enable MD038 -->after
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable hard_tab code -->
|
<!-- markdownlint-disable hard_tab code -->
|
||||||
|
|
||||||
hard tab / space * in * emphasis {MD037} / space ` in ` code
|
hard tab / space *in * emphasis {MD037} / space `in ` code
|
||||||
|
|
||||||
<!-- markdownlint-enable whitespace -->
|
<!-- markdownlint-enable whitespace -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
hard tab {MD010} <!-- markdownlint-disable --> <!-- markdownlint-enable -->
|
hard tab {MD010} <!-- markdownlint-disable --> <!-- markdownlint-enable -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
hard tab <!-- markdownlint-disable md010 -->
|
hard tab <!-- markdownlint-disable md010 -->
|
||||||
<!-- markdownlint-enable md010 -->
|
<!-- markdownlint-enable md010 -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-enable -->
|
<!-- markdownlint-enable -->
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
<!-- markdownlint-disable -->
|
<!-- markdownlint-disable -->
|
||||||
<!-- markdownlint-disable -->
|
<!-- markdownlint-disable -->
|
||||||
hard tab / space * in * emphasis / space ` in ` code
|
hard tab / space *in * emphasis / space `in ` code
|
||||||
<!-- markdownlint-enable -->
|
<!-- markdownlint-enable -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
<!-- markdownlint-disable NotATag no-space-in-code -->
|
<!-- markdownlint-disable NotATag no-space-in-code -->
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code
|
||||||
<!-- markdownlint-enable NotATag nO-sPaCe-In-CoDe -->
|
<!-- markdownlint-enable NotATag nO-sPaCe-In-CoDe -->
|
||||||
|
|
||||||
hard tab {MD010} / space * in * emphasis {MD037} / space ` in ` code {MD038}
|
hard tab {MD010} / space *in * emphasis {MD037} / space `in ` code {MD038}
|
||||||
|
|
||||||
embedded <b>{MD033}</b> HTML
|
embedded <b>{MD033}</b> HTML
|
||||||
|
|
|
||||||
|
|
@ -95,3 +95,19 @@ Text [link](#link(link`link) text `code`. {MD038}
|
||||||
Text [`link`](xref:custom.link`1) text `code`.
|
Text [`link`](xref:custom.link`1) text `code`.
|
||||||
|
|
||||||
Text ``code [link](#link`link) code`` text `code`.
|
Text ``code [link](#link`link) code`` text `code`.
|
||||||
|
|
||||||
|
No space, start or end: `code`
|
||||||
|
|
||||||
|
Start space, no end space: ` code` {MD038}
|
||||||
|
|
||||||
|
No start space, end space: `code ` {MD038}
|
||||||
|
|
||||||
|
Single start and end space: ` code ` (explicitly allowed/trimmed by the specification)
|
||||||
|
|
||||||
|
All spaces: ` ` {MD038}
|
||||||
|
|
||||||
|
Double start and single end space: ` code ` {MD038}
|
||||||
|
|
||||||
|
Single start and double end spaces: ` code ` {MD038}
|
||||||
|
|
||||||
|
Double start and end spaces: ` code ` {MD038}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue