Update MD049/emphasis-style and MD050/strong-style to not report intraword asterisks/underscores as violations because exchanging either alters meaning (fixes #789).

This commit is contained in:
David Anson 2023-05-25 02:38:18 +00:00
parent 7005a8a438
commit 0006636f75
8 changed files with 77 additions and 22 deletions

View file

@ -6050,9 +6050,12 @@ var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
filterByTypes = _require2.filterByTypes,
tokenIfType = _require2.tokenIfType;
var intrawordRe = /\w/;
var impl = function impl(params, onError, type, asterisk, underline) {
var style = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : "consistent";
var emphasisTokens = filterByTypes(params.parsers.micromark.tokens, [type]);
var lines = params.lines,
parsers = params.parsers;
var emphasisTokens = filterByTypes(parsers.micromark.tokens, [type]);
var _iterator = _createForOfIteratorHelper(emphasisTokens),
_step;
try {
@ -6068,13 +6071,16 @@ var impl = function impl(params, onError, type, asterisk, underline) {
style = markupStyle;
}
if (style !== markupStyle) {
for (var _i = 0, _arr = [startSequence, endSequence]; _i < _arr.length; _i++) {
var sequence = _arr[_i];
addError(onError, sequence.startLine, "Expected: ".concat(style, "; Actual: ").concat(markupStyle), undefined, [sequence.startColumn, sequence.text.length], {
"editColumn": sequence.startColumn,
"deleteCount": sequence.text.length,
"insertText": style === "asterisk" ? asterisk : underline
});
var underscoreIntraword = style === "underscore" && (intrawordRe.test(lines[startSequence.startLine - 1][startSequence.startColumn - 2]) || intrawordRe.test(lines[endSequence.endLine - 1][endSequence.endColumn - 1]));
if (!underscoreIntraword) {
for (var _i = 0, _arr = [startSequence, endSequence]; _i < _arr.length; _i++) {
var sequence = _arr[_i];
addError(onError, sequence.startLine, "Expected: ".concat(style, "; Actual: ").concat(markupStyle), undefined, [sequence.startColumn, sequence.text.length], {
"editColumn": sequence.startColumn,
"deleteCount": sequence.text.length,
"insertText": style === "asterisk" ? asterisk : underline
});
}
}
}
}

View file

@ -5,10 +5,13 @@
const { addError, emphasisOrStrongStyleFor } = require("../helpers");
const { filterByTypes, tokenIfType } = require("../helpers/micromark.cjs");
const intrawordRe = /\w/;
const impl =
(params, onError, type, asterisk, underline, style = "consistent") => {
const { lines, parsers } = params;
const emphasisTokens =
filterByTypes(params.parsers.micromark.tokens, [ type ]);
filterByTypes(parsers.micromark.tokens, [ type ]);
for (const token of emphasisTokens) {
const { children } = token;
const childType = `${type}Sequence`;
@ -20,19 +23,29 @@ const impl =
style = markupStyle;
}
if (style !== markupStyle) {
for (const sequence of [ startSequence, endSequence ]) {
addError(
onError,
sequence.startLine,
`Expected: ${style}; Actual: ${markupStyle}`,
undefined,
[ sequence.startColumn, sequence.text.length ],
{
"editColumn": sequence.startColumn,
"deleteCount": sequence.text.length,
"insertText": (style === "asterisk") ? asterisk : underline
}
);
const underscoreIntraword = (style === "underscore") && (
intrawordRe.test(
lines[startSequence.startLine - 1][startSequence.startColumn - 2]
) ||
intrawordRe.test(
lines[endSequence.endLine - 1][endSequence.endColumn - 1]
)
);
if (!underscoreIntraword) {
for (const sequence of [ startSequence, endSequence ]) {
addError(
onError,
sequence.startLine,
`Expected: ${style}; Actual: ${markupStyle}`,
undefined,
[ sequence.startColumn, sequence.text.length ],
{
"editColumn": sequence.startColumn,
"deleteCount": sequence.text.length,
"insertText": (style === "asterisk") ? asterisk : underline
}
);
}
}
}
}

View file

@ -4,7 +4,12 @@ This is *fine*
This is _not_ {MD049}
Internal emphasis is preserved:
apple*banana*cherry, apple*banana*, *banana*cherry
apple_banana_cherry, apple_banana_, _banana_cherry
<!-- markdownlint-configure-file {
"MD037": false,
"MD049": {
"style": "asterisk"
}

View file

@ -4,7 +4,12 @@ This is _fine_
This is *not* {MD049}
Internal emphasis is preserved:
apple*banana*cherry, apple*banana*, *banana*cherry
apple_banana_cherry, apple_banana_, _banana_cherry
<!-- markdownlint-configure-file {
"MD037": false,
"MD049": {
"style": "underscore"
}

View file

@ -10754,7 +10754,12 @@ Generated by [AVA](https://avajs.dev).
This is *not* {MD049}␊
Internal emphasis is preserved:␊
apple*banana*cherry, apple*banana*, *banana*cherry␊
apple_banana_cherry, apple_banana_, _banana_cherry␊
<!-- markdownlint-configure-file {␊
"MD037": false,␊
"MD049": {␊
"style": "asterisk"␊
}␊
@ -10815,7 +10820,12 @@ Generated by [AVA](https://avajs.dev).
This is _not_ {MD049}␊
Internal emphasis is preserved:␊
apple*banana*cherry, apple*banana*, *banana*cherry␊
apple_banana_cherry, apple_banana_, _banana_cherry␊
<!-- markdownlint-configure-file {␊
"MD037": false,␊
"MD049": {␊
"style": "underscore"␊
}␊
@ -44028,6 +44038,10 @@ Generated by [AVA](https://avajs.dev).
This is **not** {MD050}␊
Internal emphasis is preserved:␊
apple**banana**cherry, apple**banana**, **banana**cherry␊
apple__banana__cherry, apple__banana__, __banana__cherry␊
<!-- markdownlint-configure-file {␊
"MD050": {␊
"style": "asterisk"␊
@ -44089,6 +44103,10 @@ Generated by [AVA](https://avajs.dev).
This is __not__ {MD050}␊
Internal emphasis is preserved:␊
apple**banana**cherry, apple**banana**, **banana**cherry␊
apple__banana__cherry, apple__banana__, __banana__cherry␊
<!-- markdownlint-configure-file {␊
"MD050": {␊
"style": "underscore"␊

View file

@ -4,6 +4,10 @@ This is **fine**
This is __not__ {MD050}
Internal emphasis is preserved:
apple**banana**cherry, apple**banana**, **banana**cherry
apple__banana__cherry, apple__banana__, __banana__cherry
<!-- markdownlint-configure-file {
"MD050": {
"style": "asterisk"

View file

@ -4,6 +4,10 @@ This is __fine__
This is **not** {MD050}
Internal emphasis is preserved:
apple**banana**cherry, apple**banana**, **banana**cherry
apple__banana__cherry, apple__banana__, __banana__cherry
<!-- markdownlint-configure-file {
"MD050": {
"style": "underscore"