mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-22 05:40:48 +02:00
Update MD038/no-space-in-code to avoid a possible range error for indented code fences.
This commit is contained in:
parent
0e80fa5720
commit
9f87e7dc60
5 changed files with 82 additions and 20 deletions
|
@ -5429,7 +5429,7 @@ module.exports = {
|
||||||
var endData = tokenIfType(children[last - 1], "codeTextData") || tokenIfType(children[last - 2], "codeTextData");
|
var endData = tokenIfType(children[last - 1], "codeTextData") || tokenIfType(children[last - 2], "codeTextData");
|
||||||
if (startSequence && endSequence && startData && endData) {
|
if (startSequence && endSequence && startData && endData) {
|
||||||
var spaceLeft = leftSpaceRe.test(startData.text);
|
var spaceLeft = leftSpaceRe.test(startData.text);
|
||||||
var spaceRight = !spaceLeft && rightSpaceRe.test(endData.text);
|
var spaceRight = rightSpaceRe.test(endData.text);
|
||||||
if (spaceLeft || spaceRight) {
|
if (spaceLeft || spaceRight) {
|
||||||
var lineNumber = startSequence.startLine;
|
var lineNumber = startSequence.startLine;
|
||||||
var range = null;
|
var range = null;
|
||||||
|
@ -5441,14 +5441,14 @@ module.exports = {
|
||||||
"deleteCount": endSequence.startColumn - startSequence.endColumn,
|
"deleteCount": endSequence.startColumn - startSequence.endColumn,
|
||||||
"insertText": trimCodeText(startData.text, true, true)
|
"insertText": trimCodeText(startData.text, true, true)
|
||||||
};
|
};
|
||||||
} else if (spaceLeft) {
|
} else if (spaceLeft && startSequence.endLine === startData.startLine) {
|
||||||
range = [startSequence.startColumn, startData.endColumn - startSequence.startColumn];
|
range = [startSequence.startColumn, startData.endColumn - startSequence.startColumn];
|
||||||
fixInfo = {
|
fixInfo = {
|
||||||
"editColumn": startSequence.endColumn,
|
"editColumn": startSequence.endColumn,
|
||||||
"deleteCount": startData.endColumn - startData.startColumn,
|
"deleteCount": startData.endColumn - startData.startColumn,
|
||||||
"insertText": trimCodeText(startData.text, true, false)
|
"insertText": trimCodeText(startData.text, true, false)
|
||||||
};
|
};
|
||||||
} else {
|
} else if (spaceRight && endData.text.trim().length > 0) {
|
||||||
lineNumber = endSequence.endLine;
|
lineNumber = endSequence.endLine;
|
||||||
range = [endData.startColumn, endSequence.endColumn - endData.startColumn];
|
range = [endData.startColumn, endSequence.endColumn - endData.startColumn];
|
||||||
fixInfo = {
|
fixInfo = {
|
||||||
|
@ -5457,8 +5457,10 @@ module.exports = {
|
||||||
"insertText": trimCodeText(endData.text, false, true)
|
"insertText": trimCodeText(endData.text, false, true)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
var context = params.lines[lineNumber - 1].substring(range[0] - 1, range[0] - 1 + range[1]);
|
if (range) {
|
||||||
addErrorContext(onError, lineNumber, context, spaceLeft, spaceRight, range, fixInfo);
|
var context = params.lines[lineNumber - 1].substring(range[0] - 1, range[0] - 1 + range[1]);
|
||||||
|
addErrorContext(onError, lineNumber, context, spaceLeft, spaceRight, range, fixInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
32
lib/md038.js
32
lib/md038.js
|
@ -41,7 +41,7 @@ module.exports = {
|
||||||
tokenIfType(children[last - 2], "codeTextData");
|
tokenIfType(children[last - 2], "codeTextData");
|
||||||
if (startSequence && endSequence && startData && endData) {
|
if (startSequence && endSequence && startData && endData) {
|
||||||
const spaceLeft = leftSpaceRe.test(startData.text);
|
const spaceLeft = leftSpaceRe.test(startData.text);
|
||||||
const spaceRight = !spaceLeft && rightSpaceRe.test(endData.text);
|
const spaceRight = rightSpaceRe.test(endData.text);
|
||||||
if (spaceLeft || spaceRight) {
|
if (spaceLeft || spaceRight) {
|
||||||
let lineNumber = startSequence.startLine;
|
let lineNumber = startSequence.startLine;
|
||||||
let range = null;
|
let range = null;
|
||||||
|
@ -56,7 +56,7 @@ module.exports = {
|
||||||
"deleteCount": endSequence.startColumn - startSequence.endColumn,
|
"deleteCount": endSequence.startColumn - startSequence.endColumn,
|
||||||
"insertText": trimCodeText(startData.text, true, true)
|
"insertText": trimCodeText(startData.text, true, true)
|
||||||
};
|
};
|
||||||
} else if (spaceLeft) {
|
} else if (spaceLeft && (startSequence.endLine === startData.startLine)) {
|
||||||
range = [
|
range = [
|
||||||
startSequence.startColumn,
|
startSequence.startColumn,
|
||||||
startData.endColumn - startSequence.startColumn
|
startData.endColumn - startSequence.startColumn
|
||||||
|
@ -66,7 +66,7 @@ module.exports = {
|
||||||
"deleteCount": startData.endColumn - startData.startColumn,
|
"deleteCount": startData.endColumn - startData.startColumn,
|
||||||
"insertText": trimCodeText(startData.text, true, false)
|
"insertText": trimCodeText(startData.text, true, false)
|
||||||
};
|
};
|
||||||
} else {
|
} else if (spaceRight && (endData.text.trim().length > 0)) {
|
||||||
lineNumber = endSequence.endLine;
|
lineNumber = endSequence.endLine;
|
||||||
range = [
|
range = [
|
||||||
endData.startColumn,
|
endData.startColumn,
|
||||||
|
@ -78,18 +78,20 @@ module.exports = {
|
||||||
"insertText": trimCodeText(endData.text, false, true)
|
"insertText": trimCodeText(endData.text, false, true)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const context = params
|
if (range) {
|
||||||
.lines[lineNumber - 1]
|
const context = params
|
||||||
.substring(range[0] - 1, range[0] - 1 + range[1]);
|
.lines[lineNumber - 1]
|
||||||
addErrorContext(
|
.substring(range[0] - 1, range[0] - 1 + range[1]);
|
||||||
onError,
|
addErrorContext(
|
||||||
lineNumber,
|
onError,
|
||||||
context,
|
lineNumber,
|
||||||
spaceLeft,
|
context,
|
||||||
spaceRight,
|
spaceLeft,
|
||||||
range,
|
spaceRight,
|
||||||
fixInfo
|
range,
|
||||||
);
|
fixInfo
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47853,6 +47853,35 @@ Generated by [AVA](https://avajs.dev).
|
||||||
␊
|
␊
|
||||||
text \`\` \` leading and trailing␊
|
text \`\` \` leading and trailing␊
|
||||||
space allowed for backtick \` \`\` text␊
|
space allowed for backtick \` \`\` text␊
|
||||||
|
␊
|
||||||
|
<!-- markdownlint-disable blanks-around-fences fenced-code-language -->␊
|
||||||
|
␊
|
||||||
|
Text␊
|
||||||
|
\`\`\`␊
|
||||||
|
Code␊
|
||||||
|
\`\`\`␊
|
||||||
|
␊
|
||||||
|
Text␊
|
||||||
|
\`\`\`␊
|
||||||
|
Code␊
|
||||||
|
\`\`\`␊
|
||||||
|
␊
|
||||||
|
Text␊
|
||||||
|
\`\`\`␊
|
||||||
|
Code␊
|
||||||
|
\`\`\`␊
|
||||||
|
␊
|
||||||
|
Text␊
|
||||||
|
\`\`\`␊
|
||||||
|
Code␊
|
||||||
|
\`\`\`␊
|
||||||
|
Text␊
|
||||||
|
␊
|
||||||
|
Text␊
|
||||||
|
\`\`\`␊
|
||||||
|
Code␊
|
||||||
|
\`\`\`␊
|
||||||
|
Text␊
|
||||||
`,
|
`,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -137,3 +137,32 @@ not allowed ` `` text {MD038}
|
||||||
|
|
||||||
text `` ` leading and trailing
|
text `` ` leading and trailing
|
||||||
space allowed for backtick ` `` text
|
space allowed for backtick ` `` text
|
||||||
|
|
||||||
|
<!-- markdownlint-disable blanks-around-fences fenced-code-language -->
|
||||||
|
|
||||||
|
Text
|
||||||
|
```
|
||||||
|
Code
|
||||||
|
```
|
||||||
|
|
||||||
|
Text
|
||||||
|
```
|
||||||
|
Code
|
||||||
|
```
|
||||||
|
|
||||||
|
Text
|
||||||
|
```
|
||||||
|
Code
|
||||||
|
```
|
||||||
|
|
||||||
|
Text
|
||||||
|
```
|
||||||
|
Code
|
||||||
|
```
|
||||||
|
Text
|
||||||
|
|
||||||
|
Text
|
||||||
|
```
|
||||||
|
Code
|
||||||
|
```
|
||||||
|
Text
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue