Update MD011/no-reversed-links to avoid more nested paren scenarios (fixes #572).

This commit is contained in:
David Anson 2022-10-16 22:16:51 -07:00
parent 56f379b0fc
commit c333976a44
5 changed files with 69 additions and 25 deletions

View file

@ -2751,7 +2751,7 @@ module.exports = {
const { addError, forEachLine, withinAnyRange } = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js");
const { codeBlockAndSpanRanges, lineMetadata } = __webpack_require__(/*! ./cache */ "../lib/cache.js");
const reversedLinkRe = /(^|[^\\])\(([^)]+)\)\[([^\]^][^\]]*)](?!\()/g;
const reversedLinkRe = /(^|[^\\])\(([^()]+)\)\[([^\]^][^\]]*)](?!\()/g;
module.exports = {
"names": ["MD011", "no-reversed-links"],
"description": "Reversed link syntax",
@ -2768,7 +2768,7 @@ module.exports = {
if (!linkText.endsWith("\\") &&
!linkDestination.endsWith("\\") &&
!withinAnyRange(exclusions, lineIndex, index, length)) {
addError(onError, lineIndex + 1, reversedLink.slice(preChar.length), null, [index + 1, length], {
addError(onError, lineIndex + 1, reversedLink.slice(preChar.length), undefined, [index + 1, length], {
"editColumn": index + 1,
"deleteCount": length,
"insertText": `[${linkText}](${linkDestination})`

View file

@ -6,7 +6,7 @@ const { addError, forEachLine, withinAnyRange } = require("../helpers");
const { codeBlockAndSpanRanges, lineMetadata } = require("./cache");
const reversedLinkRe =
/(^|[^\\])\(([^)]+)\)\[([^\]^][^\]]*)](?!\()/g;
/(^|[^\\])\(([^()]+)\)\[([^\]^][^\]]*)](?!\()/g;
module.exports = {
"names": [ "MD011", "no-reversed-links" ],
@ -30,7 +30,7 @@ module.exports = {
onError,
lineIndex + 1,
reversedLink.slice(preChar.length),
null,
undefined,
[ index + 1, length ],
{
"editColumn": index + 1,

View file

@ -72,6 +72,18 @@ text [link](destination)[link](destination)[link](destination) text
text (reversed)[link] text (reversed)[link] text {MD011}
## Nested Parens
Text (text `func()[index]`) text
Text (text(reversed)[link] text {MD011}
## Empty Content
Text ()[text] text
Text (text()[text] text
<!-- markdownlint-configure-file {
"code-block-style": false,
"line-length": false,

View file

@ -35097,15 +35097,15 @@ Generated by [AVA](https://avajs.dev).
errors: [
{
errorContext: null,
errorDetail: '(?:\\["\'\\](?<1>\\[^"\'\\]*)["\']',
errorDetail: '(?<1>\\[^"\'\\]*)["\']',
errorRange: [
3,
27,
12,
18,
],
fixInfo: {
deleteCount: 27,
editColumn: 3,
insertText: '[?:\\["\'\\](?<1>\\[^"\'\\]*]("\')',
deleteCount: 18,
editColumn: 12,
insertText: '[?<1>\\[^"\'\\]*]("\')',
},
lineNumber: 5,
ruleDescription: 'Reversed link syntax',
@ -35120,7 +35120,7 @@ Generated by [AVA](https://avajs.dev).
|Pattern|Description|␊
|-------------|-----------------|␊
|\`[?:\\["'\\](?<1>\\[^"'\\]*]("')|(?<1>\\S+))\`|{MD011}|␊
|\`(?:\\["'\\][?<1>\\[^"'\\]*]("')|(?<1>\\S+))\`|{MD011}|␊
|Pattern|Description|␊
|-------------|-----------------|␊
@ -35296,15 +35296,15 @@ Generated by [AVA](https://avajs.dev).
},
{
errorContext: null,
errorDetail: '(([\\/.])[\\w\\-.\\/=]',
errorDetail: '([\\/.])[\\w\\-.\\/=]',
errorRange: [
11,
18,
12,
17,
],
fixInfo: {
deleteCount: 18,
editColumn: 11,
insertText: '[([\\/.]](\\w\\-.\\/=)',
deleteCount: 17,
editColumn: 12,
insertText: '[[\\/.]](\\w\\-.\\/=)',
},
lineNumber: 41,
ruleDescription: 'Reversed link syntax',
@ -35316,15 +35316,15 @@ Generated by [AVA](https://avajs.dev).
},
{
errorContext: null,
errorDetail: '(?:(?:(^|\\/)[!.]',
errorDetail: '(^|\\/)[!.]',
errorRange: [
9,
16,
15,
10,
],
fixInfo: {
deleteCount: 16,
editColumn: 9,
insertText: '[?:(?:(^|\\/](!.)',
deleteCount: 10,
editColumn: 15,
insertText: '[^|\\/](!.)',
},
lineNumber: 45,
ruleDescription: 'Reversed link syntax',
@ -35394,6 +35394,26 @@ Generated by [AVA](https://avajs.dev).
'no-reversed-links',
],
},
{
errorContext: null,
errorDetail: '(reversed)[link]',
errorRange: [
11,
16,
],
fixInfo: {
deleteCount: 16,
editColumn: 11,
insertText: '[reversed](link)',
},
lineNumber: 79,
ruleDescription: 'Reversed link syntax',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/Rules.md#md011',
ruleNames: [
'MD011',
'no-reversed-links',
],
},
],
fixed: `# reversed_link␊
@ -35435,11 +35455,11 @@ Generated by [AVA](https://avajs.dev).
var IDENT_RE = '[[a-zA-Z]|\\\\.[a-zA-Z.]](a-zA-Z0-9._)*'; {MD011}␊
begin: /\\B[([\\/.]](\\w\\-.\\/=)+)+/, {MD011}␊
begin: /\\B([[\\/.]](\\w\\-.\\/=)+)+/, {MD011}␊
{begin: '%r\\\\(', end: '\\\\)[a-z]*'}␊
return /[?:(?:(^|\\/](!.))|[*?+()|\\[\\]{}]|[+@]\\()/.test(str); {MD011}␊
return /(?:(?:[^|\\/](!.))|[*?+()|\\[\\]{}]|[+@]\\()/.test(str); {MD011}␊
## Escaped Parens␊
@ -35469,6 +35489,18 @@ Generated by [AVA](https://avajs.dev).
text [reversed](link) text [reversed](link) text {MD011}␊
## Nested Parens␊
Text (text \`func()[index]\`) text␊
Text (text[reversed](link) text {MD011}␊
## Empty Content␊
Text ()[text] text␊
Text (text()[text] text␊
<!-- markdownlint-configure-file {␊
"code-block-style": false,␊
"line-length": false,␊