diff --git a/demo/markdownlint-browser.js b/demo/markdownlint-browser.js index f8448a4e..941c17cf 100644 --- a/demo/markdownlint-browser.js +++ b/demo/markdownlint-browser.js @@ -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 + }); + } } } } diff --git a/lib/md049-md050.js b/lib/md049-md050.js index 270836b4..91556188 100644 --- a/lib/md049-md050.js +++ b/lib/md049-md050.js @@ -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 + } + ); + } } } } diff --git a/test/emphasis_style_asterisk.md b/test/emphasis_style_asterisk.md index 61ce4fbc..9afcf052 100644 --- a/test/emphasis_style_asterisk.md +++ b/test/emphasis_style_asterisk.md @@ -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 +