Update MD038/no-space-in-code to avoid a possible range error for indented code fences.

This commit is contained in:
David Anson 2023-12-06 21:22:29 -08:00
parent 0e80fa5720
commit 9f87e7dc60
5 changed files with 82 additions and 20 deletions

View file

@ -5429,7 +5429,7 @@ module.exports = {
var endData = tokenIfType(children[last - 1], "codeTextData") || tokenIfType(children[last - 2], "codeTextData");
if (startSequence && endSequence && startData && endData) {
var spaceLeft = leftSpaceRe.test(startData.text);
var spaceRight = !spaceLeft && rightSpaceRe.test(endData.text);
var spaceRight = rightSpaceRe.test(endData.text);
if (spaceLeft || spaceRight) {
var lineNumber = startSequence.startLine;
var range = null;
@ -5441,14 +5441,14 @@ module.exports = {
"deleteCount": endSequence.startColumn - startSequence.endColumn,
"insertText": trimCodeText(startData.text, true, true)
};
} else if (spaceLeft) {
} else if (spaceLeft && startSequence.endLine === startData.startLine) {
range = [startSequence.startColumn, startData.endColumn - startSequence.startColumn];
fixInfo = {
"editColumn": startSequence.endColumn,
"deleteCount": startData.endColumn - startData.startColumn,
"insertText": trimCodeText(startData.text, true, false)
};
} else {
} else if (spaceRight && endData.text.trim().length > 0) {
lineNumber = endSequence.endLine;
range = [endData.startColumn, endSequence.endColumn - endData.startColumn];
fixInfo = {
@ -5457,8 +5457,10 @@ module.exports = {
"insertText": trimCodeText(endData.text, false, true)
};
}
var context = params.lines[lineNumber - 1].substring(range[0] - 1, range[0] - 1 + range[1]);
addErrorContext(onError, lineNumber, context, spaceLeft, spaceRight, range, fixInfo);
if (range) {
var context = params.lines[lineNumber - 1].substring(range[0] - 1, range[0] - 1 + range[1]);
addErrorContext(onError, lineNumber, context, spaceLeft, spaceRight, range, fixInfo);
}
}
}
}

View file

@ -41,7 +41,7 @@ module.exports = {
tokenIfType(children[last - 2], "codeTextData");
if (startSequence && endSequence && startData && endData) {
const spaceLeft = leftSpaceRe.test(startData.text);
const spaceRight = !spaceLeft && rightSpaceRe.test(endData.text);
const spaceRight = rightSpaceRe.test(endData.text);
if (spaceLeft || spaceRight) {
let lineNumber = startSequence.startLine;
let range = null;
@ -56,7 +56,7 @@ module.exports = {
"deleteCount": endSequence.startColumn - startSequence.endColumn,
"insertText": trimCodeText(startData.text, true, true)
};
} else if (spaceLeft) {
} else if (spaceLeft && (startSequence.endLine === startData.startLine)) {
range = [
startSequence.startColumn,
startData.endColumn - startSequence.startColumn
@ -66,7 +66,7 @@ module.exports = {
"deleteCount": startData.endColumn - startData.startColumn,
"insertText": trimCodeText(startData.text, true, false)
};
} else {
} else if (spaceRight && (endData.text.trim().length > 0)) {
lineNumber = endSequence.endLine;
range = [
endData.startColumn,
@ -78,18 +78,20 @@ module.exports = {
"insertText": trimCodeText(endData.text, false, true)
};
}
const context = params
.lines[lineNumber - 1]
.substring(range[0] - 1, range[0] - 1 + range[1]);
addErrorContext(
onError,
lineNumber,
context,
spaceLeft,
spaceRight,
range,
fixInfo
);
if (range) {
const context = params
.lines[lineNumber - 1]
.substring(range[0] - 1, range[0] - 1 + range[1]);
addErrorContext(
onError,
lineNumber,
context,
spaceLeft,
spaceRight,
range,
fixInfo
);
}
}
}
}

View file

@ -47853,6 +47853,35 @@ Generated by [AVA](https://avajs.dev).
text \`\` \` leading and trailing␊
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␊
`,
}

View file

@ -137,3 +137,32 @@ not allowed ` `` text {MD038}
text `` ` leading and trailing
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