eslint-plugin-markdown-preferences 0.35.0 → 0.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +7 -4
- package/lib/index.js +745 -676
- package/package.json +3 -3
package/lib/index.js
CHANGED
|
@@ -40,6 +40,7 @@ function createRule(ruleName, rule) {
|
|
|
40
40
|
|
|
41
41
|
//#endregion
|
|
42
42
|
//#region src/utils/ast.ts
|
|
43
|
+
const RE_HTML_COMMENT = /<!--(.*?)-->/gu;
|
|
43
44
|
/**
|
|
44
45
|
* Get the parent of a node.
|
|
45
46
|
*/
|
|
@@ -137,41 +138,25 @@ function getThematicBreakMarker(sourceCode, node) {
|
|
|
137
138
|
};
|
|
138
139
|
}
|
|
139
140
|
/**
|
|
140
|
-
* Get
|
|
141
|
+
* Get all HTML comments in a node.
|
|
141
142
|
*/
|
|
142
|
-
function
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
} else {
|
|
158
|
-
const beforeLines = sourceCode.text.slice(0, range[0]).split(/\n/u);
|
|
159
|
-
startLine = beforeLines.length;
|
|
160
|
-
startColumn = 1 + (beforeLines.at(-1) || "").length;
|
|
161
|
-
}
|
|
162
|
-
const contentLines = sourceCode.text.slice(range[0], range[1]).split(/\n/u);
|
|
163
|
-
const endLine = startLine + contentLines.length - 1;
|
|
164
|
-
const endColumn = (contentLines.length === 1 ? startColumn : 1) + (contentLines.at(-1) || "").length;
|
|
165
|
-
return {
|
|
166
|
-
start: {
|
|
167
|
-
line: startLine,
|
|
168
|
-
column: startColumn
|
|
169
|
-
},
|
|
170
|
-
end: {
|
|
171
|
-
line: endLine,
|
|
172
|
-
column: endColumn
|
|
143
|
+
function getHTMLComments(sourceCode, node) {
|
|
144
|
+
const [startIndex] = sourceCode.getRange(node);
|
|
145
|
+
return [...iterate()];
|
|
146
|
+
/**
|
|
147
|
+
* An iterator which iterates HTML comments.
|
|
148
|
+
*/
|
|
149
|
+
function* iterate() {
|
|
150
|
+
let match;
|
|
151
|
+
while (match = RE_HTML_COMMENT.exec(node.value)) {
|
|
152
|
+
const start = startIndex + match.index;
|
|
153
|
+
const end = start + match[0].length;
|
|
154
|
+
yield {
|
|
155
|
+
value: match[1],
|
|
156
|
+
range: [start, end]
|
|
157
|
+
};
|
|
173
158
|
}
|
|
174
|
-
}
|
|
159
|
+
}
|
|
175
160
|
}
|
|
176
161
|
|
|
177
162
|
//#endregion
|
|
@@ -208,52 +193,28 @@ function isAsciiControlCharacter(char) {
|
|
|
208
193
|
*/
|
|
209
194
|
function parseATXHeading(sourceCode, node) {
|
|
210
195
|
if (getHeadingKind(sourceCode, node) !== "atx") return null;
|
|
211
|
-
const loc = sourceCode.getLoc(node);
|
|
212
196
|
const range = sourceCode.getRange(node);
|
|
213
197
|
const text = sourceCode.text.slice(...range);
|
|
214
198
|
const parsedOpening = parseATXHeadingOpeningSequenceFromText(text);
|
|
215
199
|
if (parsedOpening === null) return null;
|
|
216
200
|
const openingSequence = {
|
|
217
201
|
text: parsedOpening.openingSequence,
|
|
218
|
-
range: [range[0], range[0] + parsedOpening.openingSequence.length]
|
|
219
|
-
loc: {
|
|
220
|
-
start: loc.start,
|
|
221
|
-
end: {
|
|
222
|
-
line: loc.start.line,
|
|
223
|
-
column: loc.start.column + parsedOpening.openingSequence.length
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
const contentLocStart = {
|
|
228
|
-
line: openingSequence.loc.end.line,
|
|
229
|
-
column: openingSequence.loc.end.column + parsedOpening.after.length
|
|
202
|
+
range: [range[0], range[0] + parsedOpening.openingSequence.length]
|
|
230
203
|
};
|
|
231
204
|
const parsedClosing = parseATXHeadingClosingSequenceFromText(text);
|
|
232
205
|
if (parsedClosing == null) {
|
|
233
206
|
const textAfterOpening = sourceCode.text.slice(openingSequence.range[1] + parsedOpening.after.length, range[1]);
|
|
234
|
-
const contentText
|
|
235
|
-
const contentRange$1 = [openingSequence.range[1] + parsedOpening.after.length, openingSequence.range[1] + parsedOpening.after.length + contentText
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
};
|
|
240
|
-
const after = contentText$1 === textAfterOpening ? null : {
|
|
241
|
-
text: textAfterOpening.slice(contentText$1.length),
|
|
242
|
-
range: [contentRange$1[1], range[1]],
|
|
243
|
-
loc: {
|
|
244
|
-
start: contentLocEnd,
|
|
245
|
-
end: loc.end
|
|
246
|
-
}
|
|
207
|
+
const contentText = textAfterOpening.trimEnd();
|
|
208
|
+
const contentRange$1 = [openingSequence.range[1] + parsedOpening.after.length, openingSequence.range[1] + parsedOpening.after.length + contentText.length];
|
|
209
|
+
const after = contentText === textAfterOpening ? null : {
|
|
210
|
+
text: textAfterOpening.slice(contentText.length),
|
|
211
|
+
range: [contentRange$1[1], range[1]]
|
|
247
212
|
};
|
|
248
213
|
return {
|
|
249
214
|
openingSequence,
|
|
250
215
|
content: {
|
|
251
|
-
text: contentText
|
|
252
|
-
range: contentRange$1
|
|
253
|
-
loc: {
|
|
254
|
-
start: contentLocStart,
|
|
255
|
-
end: contentLocEnd
|
|
256
|
-
}
|
|
216
|
+
text: contentText,
|
|
217
|
+
range: contentRange$1
|
|
257
218
|
},
|
|
258
219
|
closingSequence: null,
|
|
259
220
|
after
|
|
@@ -261,40 +222,18 @@ function parseATXHeading(sourceCode, node) {
|
|
|
261
222
|
}
|
|
262
223
|
const spaceAfterClosing = {
|
|
263
224
|
text: parsedClosing.after,
|
|
264
|
-
range: [range[1] - parsedClosing.after.length, range[1]]
|
|
265
|
-
loc: {
|
|
266
|
-
start: {
|
|
267
|
-
line: loc.end.line,
|
|
268
|
-
column: loc.end.column - parsedClosing.after.length
|
|
269
|
-
},
|
|
270
|
-
end: loc.end
|
|
271
|
-
}
|
|
225
|
+
range: [range[1] - parsedClosing.after.length, range[1]]
|
|
272
226
|
};
|
|
273
227
|
const closingSequence = {
|
|
274
228
|
text: parsedClosing.closingSequence,
|
|
275
|
-
range: [spaceAfterClosing.range[0] - parsedClosing.closingSequence.length, spaceAfterClosing.range[0]]
|
|
276
|
-
loc: {
|
|
277
|
-
start: {
|
|
278
|
-
line: spaceAfterClosing.loc.start.line,
|
|
279
|
-
column: spaceAfterClosing.loc.start.column - parsedClosing.closingSequence.length
|
|
280
|
-
},
|
|
281
|
-
end: spaceAfterClosing.loc.start
|
|
282
|
-
}
|
|
229
|
+
range: [spaceAfterClosing.range[0] - parsedClosing.closingSequence.length, spaceAfterClosing.range[0]]
|
|
283
230
|
};
|
|
284
231
|
const contentRange = [openingSequence.range[1] + parsedOpening.after.length, closingSequence.range[0] - parsedClosing.before.length];
|
|
285
|
-
const contentText = sourceCode.text.slice(...contentRange);
|
|
286
232
|
return {
|
|
287
233
|
openingSequence,
|
|
288
234
|
content: {
|
|
289
|
-
text:
|
|
290
|
-
range: contentRange
|
|
291
|
-
loc: {
|
|
292
|
-
start: contentLocStart,
|
|
293
|
-
end: {
|
|
294
|
-
line: closingSequence.loc.start.line,
|
|
295
|
-
column: closingSequence.loc.start.column - parsedClosing.before.length
|
|
296
|
-
}
|
|
297
|
-
}
|
|
235
|
+
text: sourceCode.text.slice(...contentRange),
|
|
236
|
+
range: contentRange
|
|
298
237
|
},
|
|
299
238
|
closingSequence,
|
|
300
239
|
after: spaceAfterClosing.range[0] < spaceAfterClosing.range[1] ? spaceAfterClosing : null
|
|
@@ -349,58 +288,6 @@ function parseATXHeadingClosingSequenceFromText(text) {
|
|
|
349
288
|
}
|
|
350
289
|
}
|
|
351
290
|
|
|
352
|
-
//#endregion
|
|
353
|
-
//#region src/utils/lines.ts
|
|
354
|
-
const cache$1 = /* @__PURE__ */ new WeakMap();
|
|
355
|
-
var ParsedLines = class {
|
|
356
|
-
lines;
|
|
357
|
-
constructor(codeText) {
|
|
358
|
-
let offset = 0;
|
|
359
|
-
this.lines = codeText.split(/(?<=\n)/u).map((lineText, index) => {
|
|
360
|
-
const start = offset;
|
|
361
|
-
offset += lineText.length;
|
|
362
|
-
const range = [start, offset];
|
|
363
|
-
let text = lineText;
|
|
364
|
-
let linebreak = "";
|
|
365
|
-
if (text.at(-1) === "\n") {
|
|
366
|
-
text = text.slice(0, -1);
|
|
367
|
-
linebreak = "\n";
|
|
368
|
-
}
|
|
369
|
-
if (text.at(-1) === "\r") {
|
|
370
|
-
text = text.slice(0, -1);
|
|
371
|
-
linebreak = `\r${linebreak}`;
|
|
372
|
-
}
|
|
373
|
-
return {
|
|
374
|
-
text,
|
|
375
|
-
range,
|
|
376
|
-
line: index + 1,
|
|
377
|
-
linebreak
|
|
378
|
-
};
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
|
-
[Symbol.iterator]() {
|
|
382
|
-
return this.lines[Symbol.iterator]();
|
|
383
|
-
}
|
|
384
|
-
get length() {
|
|
385
|
-
return this.lines.length;
|
|
386
|
-
}
|
|
387
|
-
get(lineNumber) {
|
|
388
|
-
return this.lines[lineNumber - 1];
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
/**
|
|
392
|
-
* Parse the lines of the source code.
|
|
393
|
-
* @param sourceCode source code to parse
|
|
394
|
-
* @returns parsed lines
|
|
395
|
-
*/
|
|
396
|
-
function getParsedLines(sourceCode) {
|
|
397
|
-
const cached = cache$1.get(sourceCode);
|
|
398
|
-
if (cached) return cached;
|
|
399
|
-
const parsedLines = new ParsedLines(sourceCode.text);
|
|
400
|
-
cache$1.set(sourceCode, parsedLines);
|
|
401
|
-
return parsedLines;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
291
|
//#endregion
|
|
405
292
|
//#region src/utils/text-width.ts
|
|
406
293
|
let segmenter;
|
|
@@ -466,7 +353,10 @@ var atx_heading_closing_sequence_length_default = createRule("atx-heading-closin
|
|
|
466
353
|
if (expectedLength === actualLength) return;
|
|
467
354
|
context.report({
|
|
468
355
|
node: reportNode,
|
|
469
|
-
loc:
|
|
356
|
+
loc: {
|
|
357
|
+
start: sourceCode.getLocFromIndex(parsed.closingSequence.range[0]),
|
|
358
|
+
end: sourceCode.getLocFromIndex(parsed.closingSequence.range[1])
|
|
359
|
+
},
|
|
470
360
|
messageId: "wrongClosingLength",
|
|
471
361
|
data: {
|
|
472
362
|
expected: String(expectedLength),
|
|
@@ -546,17 +436,23 @@ var atx_heading_closing_sequence_length_default = createRule("atx-heading-closin
|
|
|
546
436
|
* Get the content length of the heading.
|
|
547
437
|
*/
|
|
548
438
|
function getContentLength(parsed) {
|
|
549
|
-
const
|
|
550
|
-
const
|
|
551
|
-
|
|
439
|
+
const closingSequenceStartLine = sourceCode.getLocFromIndex(parsed.closingSequence.range[0]).line;
|
|
440
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
441
|
+
line: closingSequenceStartLine,
|
|
442
|
+
column: 1
|
|
443
|
+
});
|
|
444
|
+
return getTextWidth(sourceCode.text.slice(lineStartIndex, parsed.closingSequence.range[0]));
|
|
552
445
|
}
|
|
553
446
|
/**
|
|
554
447
|
* Get the line length of the heading.
|
|
555
448
|
*/
|
|
556
449
|
function getLineLength(parsed) {
|
|
557
|
-
const
|
|
558
|
-
const
|
|
559
|
-
|
|
450
|
+
const closingSequenceStartLine = sourceCode.getLocFromIndex(parsed.closingSequence.range[0]).line;
|
|
451
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
452
|
+
line: closingSequenceStartLine,
|
|
453
|
+
column: 1
|
|
454
|
+
});
|
|
455
|
+
return getTextWidth(sourceCode.text.slice(lineStartIndex, parsed.closingSequence.range[1]));
|
|
560
456
|
}
|
|
561
457
|
}
|
|
562
458
|
});
|
|
@@ -608,14 +504,13 @@ var atx_heading_closing_sequence_default = createRule("atx-heading-closing-seque
|
|
|
608
504
|
context.report({
|
|
609
505
|
node,
|
|
610
506
|
loc: {
|
|
611
|
-
start: parsed.content.
|
|
612
|
-
end: parsed.closingSequence.
|
|
507
|
+
start: sourceCode.getLocFromIndex(parsed.content.range[1]),
|
|
508
|
+
end: sourceCode.getLocFromIndex(parsed.closingSequence.range[1])
|
|
613
509
|
},
|
|
614
510
|
messageId: "forbidClosing",
|
|
615
511
|
*fix(fixer) {
|
|
616
512
|
const removeRange = [parsed.content.range[1], parsed.closingSequence.range[1]];
|
|
617
|
-
const
|
|
618
|
-
const newHeadingParsed = parseATXHeadingClosingSequenceFromText(newHeadingText);
|
|
513
|
+
const newHeadingParsed = parseATXHeadingClosingSequenceFromText(sourceCode.text.slice(sourceCode.getRange(node)[0], removeRange[0]));
|
|
619
514
|
if (newHeadingParsed) {
|
|
620
515
|
const escapeIndex = removeRange[0] - newHeadingParsed.after.length - 1;
|
|
621
516
|
yield fixer.insertTextBeforeRange([escapeIndex, escapeIndex], "\\");
|
|
@@ -787,19 +682,28 @@ var blockquote_marker_alignment_default = createRule("blockquote-marker-alignmen
|
|
|
787
682
|
loc: marker.loc,
|
|
788
683
|
messageId: "inconsistentAlignment",
|
|
789
684
|
fix(fixer) {
|
|
790
|
-
const line = getParsedLines(sourceCode).get(lineNumber);
|
|
791
685
|
if (indentWidth < baseIndentWidth) {
|
|
792
686
|
const addSpaces = " ".repeat(baseIndentWidth - indentWidth);
|
|
793
|
-
|
|
687
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
688
|
+
line: lineNumber,
|
|
689
|
+
column: 1
|
|
690
|
+
});
|
|
691
|
+
return fixer.insertTextBeforeRange([lineStartIndex + marker.loc.start.column - 1, lineStartIndex + marker.loc.start.column - 1], addSpaces);
|
|
794
692
|
}
|
|
795
|
-
let newBeforeMarker =
|
|
693
|
+
let newBeforeMarker = sourceCode.lines[lineNumber - 1].slice(0, marker.loc.start.column - 1);
|
|
796
694
|
while (getWidth(newBeforeMarker) > baseIndentWidth) {
|
|
797
695
|
const last = newBeforeMarker.at(-1);
|
|
798
696
|
if (last && isWhitespace(last)) newBeforeMarker = newBeforeMarker.slice(0, -1);
|
|
799
697
|
else return null;
|
|
800
698
|
}
|
|
801
699
|
if (getWidth(newBeforeMarker) < baseIndentWidth) newBeforeMarker += " ".repeat(baseIndentWidth - getWidth(newBeforeMarker));
|
|
802
|
-
if (!baseBeforeMarker.includes(">") || baseBeforeMarker === newBeforeMarker)
|
|
700
|
+
if (!baseBeforeMarker.includes(">") || baseBeforeMarker === newBeforeMarker) {
|
|
701
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
702
|
+
line: lineNumber,
|
|
703
|
+
column: 1
|
|
704
|
+
});
|
|
705
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + marker.loc.start.column - 1], newBeforeMarker);
|
|
706
|
+
}
|
|
803
707
|
return null;
|
|
804
708
|
}
|
|
805
709
|
});
|
|
@@ -1005,23 +909,19 @@ function parseFencedCodeBlock(sourceCode, node) {
|
|
|
1005
909
|
const trimmedAfterLanguage = afterLanguage.trimStart();
|
|
1006
910
|
const spaceAfterLanguageLength = afterLanguage.length - trimmedAfterLanguage.length;
|
|
1007
911
|
const metaText = trimmedAfterLanguage.trimEnd();
|
|
1008
|
-
const openingFenceRange = [range[0], range[0] + fenceText.length];
|
|
1009
912
|
const openingFence = {
|
|
1010
913
|
text: fenceText,
|
|
1011
|
-
range:
|
|
1012
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingFenceRange)
|
|
914
|
+
range: [range[0], range[0] + fenceText.length]
|
|
1013
915
|
};
|
|
1014
916
|
const languageRange = languageText ? [openingFence.range[1] + spaceAfterOpeningFenceLength, openingFence.range[1] + spaceAfterOpeningFenceLength + languageText.length] : null;
|
|
1015
917
|
const language$2 = languageText && languageRange ? {
|
|
1016
918
|
text: languageText,
|
|
1017
|
-
range: languageRange
|
|
1018
|
-
loc: getSourceLocationFromRange(sourceCode, node, languageRange)
|
|
919
|
+
range: languageRange
|
|
1019
920
|
} : null;
|
|
1020
921
|
const metaRange = language$2 && metaText ? [language$2.range[1] + spaceAfterLanguageLength, language$2.range[1] + spaceAfterLanguageLength + metaText.length] : null;
|
|
1021
922
|
const meta = language$2 && metaText && metaRange ? {
|
|
1022
923
|
text: metaText,
|
|
1023
|
-
range: metaRange
|
|
1024
|
-
loc: getSourceLocationFromRange(sourceCode, node, metaRange)
|
|
924
|
+
range: metaRange
|
|
1025
925
|
} : null;
|
|
1026
926
|
const fenceChar = fenceText[0];
|
|
1027
927
|
let closingFenceText = "";
|
|
@@ -1054,17 +954,7 @@ function parseFencedCodeBlock(sourceCode, node) {
|
|
|
1054
954
|
meta,
|
|
1055
955
|
closingFence: {
|
|
1056
956
|
text: closingFenceText,
|
|
1057
|
-
range: [range[1] - trailingSpacesLength - closingFenceText.length, range[1] - trailingSpacesLength]
|
|
1058
|
-
loc: {
|
|
1059
|
-
start: {
|
|
1060
|
-
line: loc.end.line,
|
|
1061
|
-
column: loc.end.column - trailingSpacesLength - closingFenceText.length
|
|
1062
|
-
},
|
|
1063
|
-
end: {
|
|
1064
|
-
line: loc.end.line,
|
|
1065
|
-
column: loc.end.column - trailingSpacesLength
|
|
1066
|
-
}
|
|
1067
|
-
}
|
|
957
|
+
range: [range[1] - trailingSpacesLength - closingFenceText.length, range[1] - trailingSpacesLength]
|
|
1068
958
|
}
|
|
1069
959
|
};
|
|
1070
960
|
}
|
|
@@ -1127,7 +1017,10 @@ var canonical_code_block_language_default = createRule("canonical-code-block-lan
|
|
|
1127
1017
|
if (!parsed || !parsed.language) return;
|
|
1128
1018
|
context.report({
|
|
1129
1019
|
node,
|
|
1130
|
-
loc:
|
|
1020
|
+
loc: {
|
|
1021
|
+
start: sourceCode.getLocFromIndex(parsed.language.range[0]),
|
|
1022
|
+
end: sourceCode.getLocFromIndex(parsed.language.range[1])
|
|
1023
|
+
},
|
|
1131
1024
|
messageId: "useCanonical",
|
|
1132
1025
|
data: {
|
|
1133
1026
|
canonical,
|
|
@@ -1211,7 +1104,10 @@ var code_fence_length_default = createRule("code-fence-length", {
|
|
|
1211
1104
|
const expectedFence = getExpectedFence(parsed, length);
|
|
1212
1105
|
context.report({
|
|
1213
1106
|
node,
|
|
1214
|
-
loc:
|
|
1107
|
+
loc: {
|
|
1108
|
+
start: sourceCode.getLocFromIndex(parsed.openingFence.range[0]),
|
|
1109
|
+
end: sourceCode.getLocFromIndex(parsed.openingFence.range[1])
|
|
1110
|
+
},
|
|
1215
1111
|
data: {
|
|
1216
1112
|
expected: expectedFence,
|
|
1217
1113
|
actual: parsed.openingFence.text
|
|
@@ -1262,7 +1158,10 @@ var code_fence_length_default = createRule("code-fence-length", {
|
|
|
1262
1158
|
if (!closingFence || openingFence.text.length === closingFence.text.length) return true;
|
|
1263
1159
|
context.report({
|
|
1264
1160
|
node,
|
|
1265
|
-
loc:
|
|
1161
|
+
loc: {
|
|
1162
|
+
start: sourceCode.getLocFromIndex(closingFence.range[0]),
|
|
1163
|
+
end: sourceCode.getLocFromIndex(closingFence.range[1])
|
|
1164
|
+
},
|
|
1266
1165
|
messageId: "notMatch",
|
|
1267
1166
|
fix(fixer) {
|
|
1268
1167
|
return [fixer.replaceTextRange(closingFence.range, openingFence.text)];
|
|
@@ -1314,7 +1213,10 @@ var code_fence_spacing_default = createRule("code-fence-spacing", {
|
|
|
1314
1213
|
if (hasSpace) return;
|
|
1315
1214
|
context.report({
|
|
1316
1215
|
node,
|
|
1317
|
-
loc:
|
|
1216
|
+
loc: {
|
|
1217
|
+
start: sourceCode.getLocFromIndex(language$2.range[0]),
|
|
1218
|
+
end: sourceCode.getLocFromIndex(language$2.range[1])
|
|
1219
|
+
},
|
|
1318
1220
|
messageId: "expectedSpace",
|
|
1319
1221
|
fix(fixer) {
|
|
1320
1222
|
return fixer.insertTextAfterRange(openingFence.range, " ");
|
|
@@ -1324,7 +1226,10 @@ var code_fence_spacing_default = createRule("code-fence-spacing", {
|
|
|
1324
1226
|
if (!hasSpace) return;
|
|
1325
1227
|
context.report({
|
|
1326
1228
|
node,
|
|
1327
|
-
loc:
|
|
1229
|
+
loc: {
|
|
1230
|
+
start: sourceCode.getLocFromIndex(openingFence.range[1]),
|
|
1231
|
+
end: sourceCode.getLocFromIndex(language$2.range[0])
|
|
1232
|
+
},
|
|
1328
1233
|
messageId: "unexpectedSpace",
|
|
1329
1234
|
fix(fixer) {
|
|
1330
1235
|
return fixer.removeRange([openingFence.range[1], language$2.range[0]]);
|
|
@@ -1368,7 +1273,10 @@ var code_fence_style_default = createRule("code-fence-style", {
|
|
|
1368
1273
|
if (node.value.includes(expectedOpeningFence)) return;
|
|
1369
1274
|
context.report({
|
|
1370
1275
|
node,
|
|
1371
|
-
loc:
|
|
1276
|
+
loc: {
|
|
1277
|
+
start: sourceCode.getLocFromIndex(parsed.openingFence.range[0]),
|
|
1278
|
+
end: sourceCode.getLocFromIndex(parsed.openingFence.range[1])
|
|
1279
|
+
},
|
|
1372
1280
|
data: {
|
|
1373
1281
|
expected: expectedOpeningFence,
|
|
1374
1282
|
actual: parsed.openingFence.text
|
|
@@ -1401,17 +1309,13 @@ function parseCustomContainer(sourceCode, node) {
|
|
|
1401
1309
|
const spaceAfterOpeningSequenceLength = afterOpeningSequence.length - trimmedAfterOpeningSequence.length;
|
|
1402
1310
|
const infoText = trimmedAfterOpeningSequence.trimEnd();
|
|
1403
1311
|
if (!infoText) return null;
|
|
1404
|
-
const openingSequenceRange = [range[0], range[0] + sequenceText.length];
|
|
1405
1312
|
const openingSequence = {
|
|
1406
1313
|
text: sequenceText,
|
|
1407
|
-
range:
|
|
1408
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingSequenceRange)
|
|
1314
|
+
range: [range[0], range[0] + sequenceText.length]
|
|
1409
1315
|
};
|
|
1410
|
-
const infoRange = [openingSequence.range[1] + spaceAfterOpeningSequenceLength, openingSequence.range[1] + spaceAfterOpeningSequenceLength + infoText.length];
|
|
1411
1316
|
const info = {
|
|
1412
1317
|
text: infoText,
|
|
1413
|
-
range:
|
|
1414
|
-
loc: getSourceLocationFromRange(sourceCode, node, infoRange)
|
|
1318
|
+
range: [openingSequence.range[1] + spaceAfterOpeningSequenceLength, openingSequence.range[1] + spaceAfterOpeningSequenceLength + infoText.length]
|
|
1415
1319
|
};
|
|
1416
1320
|
const sequenceChar = sequenceText[0];
|
|
1417
1321
|
let closingSequenceText = "";
|
|
@@ -1443,8 +1347,7 @@ function parseCustomContainer(sourceCode, node) {
|
|
|
1443
1347
|
info,
|
|
1444
1348
|
closingSequence: {
|
|
1445
1349
|
text: closingSequenceText,
|
|
1446
|
-
range: closingSequenceRange
|
|
1447
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingSequenceRange)
|
|
1350
|
+
range: closingSequenceRange
|
|
1448
1351
|
}
|
|
1449
1352
|
};
|
|
1450
1353
|
}
|
|
@@ -1483,7 +1386,10 @@ var custom_container_marker_spacing_default = createRule("custom-container-marke
|
|
|
1483
1386
|
if (hasSpace) return;
|
|
1484
1387
|
context.report({
|
|
1485
1388
|
node,
|
|
1486
|
-
loc:
|
|
1389
|
+
loc: {
|
|
1390
|
+
start: sourceCode.getLocFromIndex(info.range[0]),
|
|
1391
|
+
end: sourceCode.getLocFromIndex(info.range[1])
|
|
1392
|
+
},
|
|
1487
1393
|
messageId: "expectedSpace",
|
|
1488
1394
|
fix(fixer) {
|
|
1489
1395
|
return fixer.insertTextAfterRange(openingSequence.range, " ");
|
|
@@ -1493,7 +1399,10 @@ var custom_container_marker_spacing_default = createRule("custom-container-marke
|
|
|
1493
1399
|
if (!hasSpace) return;
|
|
1494
1400
|
context.report({
|
|
1495
1401
|
node,
|
|
1496
|
-
loc:
|
|
1402
|
+
loc: {
|
|
1403
|
+
start: sourceCode.getLocFromIndex(openingSequence.range[1]),
|
|
1404
|
+
end: sourceCode.getLocFromIndex(info.range[0])
|
|
1405
|
+
},
|
|
1497
1406
|
messageId: "unexpectedSpace",
|
|
1498
1407
|
fix(fixer) {
|
|
1499
1408
|
return fixer.removeRange([openingSequence.range[1], info.range[0]]);
|
|
@@ -1510,17 +1419,15 @@ var custom_container_marker_spacing_default = createRule("custom-container-marke
|
|
|
1510
1419
|
* Parse options with defaults.
|
|
1511
1420
|
*/
|
|
1512
1421
|
function parseOptions$6(options) {
|
|
1513
|
-
const linkDefinitionPlacement = {
|
|
1514
|
-
referencedFromSingleSection: options?.linkDefinitionPlacement?.referencedFromSingleSection || "document-last",
|
|
1515
|
-
referencedFromMultipleSections: options?.linkDefinitionPlacement?.referencedFromMultipleSections || "document-last"
|
|
1516
|
-
};
|
|
1517
|
-
const footnoteDefinitionPlacement = {
|
|
1518
|
-
referencedFromSingleSection: options?.footnoteDefinitionPlacement?.referencedFromSingleSection || "document-last",
|
|
1519
|
-
referencedFromMultipleSections: options?.footnoteDefinitionPlacement?.referencedFromMultipleSections || "document-last"
|
|
1520
|
-
};
|
|
1521
1422
|
return {
|
|
1522
|
-
linkDefinitionPlacement
|
|
1523
|
-
|
|
1423
|
+
linkDefinitionPlacement: {
|
|
1424
|
+
referencedFromSingleSection: options?.linkDefinitionPlacement?.referencedFromSingleSection || "document-last",
|
|
1425
|
+
referencedFromMultipleSections: options?.linkDefinitionPlacement?.referencedFromMultipleSections || "document-last"
|
|
1426
|
+
},
|
|
1427
|
+
footnoteDefinitionPlacement: {
|
|
1428
|
+
referencedFromSingleSection: options?.footnoteDefinitionPlacement?.referencedFromSingleSection || "document-last",
|
|
1429
|
+
referencedFromMultipleSections: options?.footnoteDefinitionPlacement?.referencedFromMultipleSections || "document-last"
|
|
1430
|
+
}
|
|
1524
1431
|
};
|
|
1525
1432
|
}
|
|
1526
1433
|
var definitions_last_default = createRule("definitions-last", {
|
|
@@ -1693,8 +1600,7 @@ var definitions_last_default = createRule("definitions-last", {
|
|
|
1693
1600
|
* to the last of the document/section.
|
|
1694
1601
|
*/
|
|
1695
1602
|
function fixToMoveFromBeforeLastOfSectionToLastOfSection(fixer, prev, node) {
|
|
1696
|
-
|
|
1697
|
-
return fixToMove(fixer, prev, next, node);
|
|
1603
|
+
return fixToMove(fixer, prev, getNextSibling(sourceCode, prev), node);
|
|
1698
1604
|
}
|
|
1699
1605
|
/**
|
|
1700
1606
|
* Fixer to move a definition or footnote definition node from after the last of the document/section
|
|
@@ -3803,7 +3709,10 @@ var emoji_notation_default = createRule("emoji-notation", {
|
|
|
3803
3709
|
const colon = emojiData.emojiToColon[emoji];
|
|
3804
3710
|
context.report({
|
|
3805
3711
|
node,
|
|
3806
|
-
loc:
|
|
3712
|
+
loc: {
|
|
3713
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
3714
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
3715
|
+
},
|
|
3807
3716
|
messageId: colon ? "preferColon" : "preferUnknownColon",
|
|
3808
3717
|
data: {
|
|
3809
3718
|
unicode: emoji,
|
|
@@ -3831,7 +3740,10 @@ var emoji_notation_default = createRule("emoji-notation", {
|
|
|
3831
3740
|
const emoji = emojiData.colonToEmoji[colon];
|
|
3832
3741
|
context.report({
|
|
3833
3742
|
node,
|
|
3834
|
-
loc:
|
|
3743
|
+
loc: {
|
|
3744
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
3745
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
3746
|
+
},
|
|
3835
3747
|
messageId: emoji ? "preferUnicode" : "preferUnknownUnicode",
|
|
3836
3748
|
data: {
|
|
3837
3749
|
unicode: emoji || "😄",
|
|
@@ -4539,6 +4451,11 @@ const defaultPreserveWords = [
|
|
|
4539
4451
|
"Insomnia",
|
|
4540
4452
|
"Redoc",
|
|
4541
4453
|
"Stoplight",
|
|
4454
|
+
"MIT",
|
|
4455
|
+
"GPL",
|
|
4456
|
+
"AGPL",
|
|
4457
|
+
"LGPL",
|
|
4458
|
+
"CC0",
|
|
4542
4459
|
"FAQ",
|
|
4543
4460
|
"YouTube"
|
|
4544
4461
|
];
|
|
@@ -4679,6 +4596,7 @@ function parsePreserveWordsOption(preserveWordsOption) {
|
|
|
4679
4596
|
|
|
4680
4597
|
//#endregion
|
|
4681
4598
|
//#region src/utils/words.ts
|
|
4599
|
+
const WELLKNOWN_WORDS = new Set(["I"]);
|
|
4682
4600
|
/**
|
|
4683
4601
|
* Parse text into words with offsets
|
|
4684
4602
|
*/
|
|
@@ -4694,6 +4612,7 @@ function parseWordsFromText(text, firstNode, lastNode) {
|
|
|
4694
4612
|
word: token,
|
|
4695
4613
|
offset: match.index,
|
|
4696
4614
|
punctuation,
|
|
4615
|
+
wellknownWord: WELLKNOWN_WORDS.has(token),
|
|
4697
4616
|
first: false,
|
|
4698
4617
|
last: false
|
|
4699
4618
|
});
|
|
@@ -4780,14 +4699,14 @@ var heading_casing_default = createRule("heading-casing", {
|
|
|
4780
4699
|
* Check text node and report word-level errors
|
|
4781
4700
|
*/
|
|
4782
4701
|
function checkTextNode(node, firstNode, lastNode) {
|
|
4783
|
-
const
|
|
4784
|
-
const wordAndOffsets = parseWordsFromText(text, firstNode, lastNode);
|
|
4702
|
+
const wordAndOffsets = parseWordsFromText(sourceCode.getText(node), firstNode, lastNode);
|
|
4785
4703
|
const processed = /* @__PURE__ */ new Set();
|
|
4786
4704
|
for (let index = 0; index < wordAndOffsets.length; index++) {
|
|
4787
4705
|
if (processed.has(index)) continue;
|
|
4788
4706
|
processed.add(index);
|
|
4789
4707
|
const wordAndOffset = wordAndOffsets[index];
|
|
4790
4708
|
if (wordAndOffset.punctuation) continue;
|
|
4709
|
+
if (wordAndOffset.wellknownWord) continue;
|
|
4791
4710
|
if (ignorePatterns.some((pattern) => pattern.test(wordAndOffset.word))) continue;
|
|
4792
4711
|
const preservePhrase = preserveWordsOption.findPreservePhrase((function* () {
|
|
4793
4712
|
const firstWord = wordAndOffsets[index];
|
|
@@ -4828,7 +4747,10 @@ var heading_casing_default = createRule("heading-casing", {
|
|
|
4828
4747
|
actual: word,
|
|
4829
4748
|
expected: expectedWord
|
|
4830
4749
|
},
|
|
4831
|
-
loc:
|
|
4750
|
+
loc: {
|
|
4751
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
4752
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
4753
|
+
},
|
|
4832
4754
|
fix(fixer) {
|
|
4833
4755
|
return fixer.replaceTextRange(range, expectedWord);
|
|
4834
4756
|
}
|
|
@@ -4967,8 +4889,7 @@ var BackwardCharacterCursor = class extends CharacterCursor {
|
|
|
4967
4889
|
* Parse the link definition.
|
|
4968
4890
|
*/
|
|
4969
4891
|
function parseLinkDefinition(sourceCode, node) {
|
|
4970
|
-
const
|
|
4971
|
-
const parsed = parseLinkDefinitionFromText(text);
|
|
4892
|
+
const parsed = parseLinkDefinitionFromText(sourceCode.getText(node));
|
|
4972
4893
|
if (!parsed) return null;
|
|
4973
4894
|
const nodeRange = sourceCode.getRange(node);
|
|
4974
4895
|
const labelRange = [nodeRange[0] + parsed.label.range[0], nodeRange[0] + parsed.label.range[1]];
|
|
@@ -4976,20 +4897,17 @@ function parseLinkDefinition(sourceCode, node) {
|
|
|
4976
4897
|
return {
|
|
4977
4898
|
label: {
|
|
4978
4899
|
text: parsed.label.text,
|
|
4979
|
-
range: labelRange
|
|
4980
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange)
|
|
4900
|
+
range: labelRange
|
|
4981
4901
|
},
|
|
4982
4902
|
destination: {
|
|
4983
4903
|
type: parsed.destination.type,
|
|
4984
4904
|
text: parsed.destination.text,
|
|
4985
|
-
range: destinationRange
|
|
4986
|
-
loc: getSourceLocationFromRange(sourceCode, node, destinationRange)
|
|
4905
|
+
range: destinationRange
|
|
4987
4906
|
},
|
|
4988
4907
|
title: parsed.title ? {
|
|
4989
4908
|
type: parsed.title.type,
|
|
4990
4909
|
text: parsed.title.text,
|
|
4991
|
-
range: [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]]
|
|
4992
|
-
loc: getSourceLocationFromRange(sourceCode, node, [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]])
|
|
4910
|
+
range: [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]]
|
|
4993
4911
|
} : null
|
|
4994
4912
|
};
|
|
4995
4913
|
}
|
|
@@ -5084,30 +5002,19 @@ function parseInlineLink(sourceCode, node) {
|
|
|
5084
5002
|
const destinationRange = [textRange[1] + parsed.destination.range[0], textRange[1] + parsed.destination.range[1]];
|
|
5085
5003
|
const closingParenRange = [textRange[1] + parsed.closingParen.range[0], textRange[1] + parsed.closingParen.range[1]];
|
|
5086
5004
|
return {
|
|
5087
|
-
text: {
|
|
5088
|
-
|
|
5089
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5090
|
-
},
|
|
5091
|
-
openingParen: {
|
|
5092
|
-
range: openingParenRange,
|
|
5093
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingParenRange)
|
|
5094
|
-
},
|
|
5005
|
+
text: { range: textRange },
|
|
5006
|
+
openingParen: { range: openingParenRange },
|
|
5095
5007
|
destination: {
|
|
5096
5008
|
type: parsed.destination.type,
|
|
5097
5009
|
text: parsed.destination.text,
|
|
5098
|
-
range: destinationRange
|
|
5099
|
-
loc: getSourceLocationFromRange(sourceCode, node, destinationRange)
|
|
5010
|
+
range: destinationRange
|
|
5100
5011
|
},
|
|
5101
5012
|
title: parsed.title ? {
|
|
5102
5013
|
type: parsed.title.type,
|
|
5103
5014
|
text: parsed.title.text,
|
|
5104
|
-
range: [textRange[1] + parsed.title.range[0], textRange[1] + parsed.title.range[1]]
|
|
5105
|
-
loc: getSourceLocationFromRange(sourceCode, node, [textRange[1] + parsed.title.range[0], textRange[1] + parsed.title.range[1]])
|
|
5015
|
+
range: [textRange[1] + parsed.title.range[0], textRange[1] + parsed.title.range[1]]
|
|
5106
5016
|
} : null,
|
|
5107
|
-
closingParen: {
|
|
5108
|
-
range: closingParenRange,
|
|
5109
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingParenRange)
|
|
5110
|
-
}
|
|
5017
|
+
closingParen: { range: closingParenRange }
|
|
5111
5018
|
};
|
|
5112
5019
|
}
|
|
5113
5020
|
/**
|
|
@@ -5197,23 +5104,16 @@ function parseLinkReference(sourceCode, node) {
|
|
|
5197
5104
|
textRange = [nodeRange[0], sourceCode.text.indexOf("]", lastChildRange[1]) + 1];
|
|
5198
5105
|
}
|
|
5199
5106
|
if (node.referenceType === "shortcut") return {
|
|
5200
|
-
text: {
|
|
5201
|
-
range: textRange,
|
|
5202
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5203
|
-
},
|
|
5107
|
+
text: { range: textRange },
|
|
5204
5108
|
label: null
|
|
5205
5109
|
};
|
|
5206
5110
|
if (node.referenceType === "collapsed") {
|
|
5207
5111
|
const labelRange$1 = [textRange[1], textRange[1] + 1];
|
|
5208
5112
|
return {
|
|
5209
|
-
text: {
|
|
5210
|
-
range: textRange,
|
|
5211
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5212
|
-
},
|
|
5113
|
+
text: { range: textRange },
|
|
5213
5114
|
label: {
|
|
5214
5115
|
type: "collapsed",
|
|
5215
|
-
range: labelRange$1
|
|
5216
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange$1)
|
|
5116
|
+
range: labelRange$1
|
|
5217
5117
|
}
|
|
5218
5118
|
};
|
|
5219
5119
|
}
|
|
@@ -5228,15 +5128,11 @@ function parseLinkReference(sourceCode, node) {
|
|
|
5228
5128
|
if (sourceCode.text[index] !== "]") return null;
|
|
5229
5129
|
const labelRange = [textRange[1], index + 1];
|
|
5230
5130
|
return {
|
|
5231
|
-
text: {
|
|
5232
|
-
range: textRange,
|
|
5233
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5234
|
-
},
|
|
5131
|
+
text: { range: textRange },
|
|
5235
5132
|
label: {
|
|
5236
5133
|
type: "full",
|
|
5237
5134
|
text: sourceCode.text.slice(...labelRange),
|
|
5238
|
-
range: labelRange
|
|
5239
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange)
|
|
5135
|
+
range: labelRange
|
|
5240
5136
|
}
|
|
5241
5137
|
};
|
|
5242
5138
|
}
|
|
@@ -5247,8 +5143,7 @@ function parseLinkReference(sourceCode, node) {
|
|
|
5247
5143
|
* Parse the image.
|
|
5248
5144
|
*/
|
|
5249
5145
|
function parseImage(sourceCode, node) {
|
|
5250
|
-
const
|
|
5251
|
-
const parsed = parseImageFromText(text);
|
|
5146
|
+
const parsed = parseImageFromText(sourceCode.getText(node));
|
|
5252
5147
|
if (!parsed) return null;
|
|
5253
5148
|
const nodeRange = sourceCode.getRange(node);
|
|
5254
5149
|
const textRange = [nodeRange[0] + parsed.text.range[0], nodeRange[0] + parsed.text.range[1]];
|
|
@@ -5256,30 +5151,19 @@ function parseImage(sourceCode, node) {
|
|
|
5256
5151
|
const destinationRange = [nodeRange[0] + parsed.destination.range[0], nodeRange[0] + parsed.destination.range[1]];
|
|
5257
5152
|
const closingParenRange = [nodeRange[0] + parsed.closingParen.range[0], nodeRange[0] + parsed.closingParen.range[1]];
|
|
5258
5153
|
return {
|
|
5259
|
-
text: {
|
|
5260
|
-
|
|
5261
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5262
|
-
},
|
|
5263
|
-
openingParen: {
|
|
5264
|
-
range: openingParenRange,
|
|
5265
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingParenRange)
|
|
5266
|
-
},
|
|
5154
|
+
text: { range: textRange },
|
|
5155
|
+
openingParen: { range: openingParenRange },
|
|
5267
5156
|
destination: {
|
|
5268
5157
|
type: parsed.destination.type,
|
|
5269
5158
|
text: parsed.destination.text,
|
|
5270
|
-
range: destinationRange
|
|
5271
|
-
loc: getSourceLocationFromRange(sourceCode, node, destinationRange)
|
|
5159
|
+
range: destinationRange
|
|
5272
5160
|
},
|
|
5273
5161
|
title: parsed.title ? {
|
|
5274
5162
|
type: parsed.title.type,
|
|
5275
5163
|
text: parsed.title.text,
|
|
5276
|
-
range: [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]]
|
|
5277
|
-
loc: getSourceLocationFromRange(sourceCode, node, [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]])
|
|
5164
|
+
range: [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]]
|
|
5278
5165
|
} : null,
|
|
5279
|
-
closingParen: {
|
|
5280
|
-
range: closingParenRange,
|
|
5281
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingParenRange)
|
|
5282
|
-
}
|
|
5166
|
+
closingParen: { range: closingParenRange }
|
|
5283
5167
|
};
|
|
5284
5168
|
}
|
|
5285
5169
|
/**
|
|
@@ -5359,8 +5243,7 @@ function parseImageReference(sourceCode, node) {
|
|
|
5359
5243
|
return {
|
|
5360
5244
|
text: {
|
|
5361
5245
|
range: textRange$1,
|
|
5362
|
-
text: sourceCode.text.slice(...textRange$1)
|
|
5363
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange$1)
|
|
5246
|
+
text: sourceCode.text.slice(...textRange$1)
|
|
5364
5247
|
},
|
|
5365
5248
|
label: null
|
|
5366
5249
|
};
|
|
@@ -5371,13 +5254,11 @@ function parseImageReference(sourceCode, node) {
|
|
|
5371
5254
|
return {
|
|
5372
5255
|
text: {
|
|
5373
5256
|
range: textRange$1,
|
|
5374
|
-
text: sourceCode.text.slice(...textRange$1)
|
|
5375
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange$1)
|
|
5257
|
+
text: sourceCode.text.slice(...textRange$1)
|
|
5376
5258
|
},
|
|
5377
5259
|
label: {
|
|
5378
5260
|
type: "collapsed",
|
|
5379
|
-
range: labelRange$1
|
|
5380
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange$1)
|
|
5261
|
+
range: labelRange$1
|
|
5381
5262
|
}
|
|
5382
5263
|
};
|
|
5383
5264
|
}
|
|
@@ -5388,14 +5269,12 @@ function parseImageReference(sourceCode, node) {
|
|
|
5388
5269
|
return {
|
|
5389
5270
|
text: {
|
|
5390
5271
|
range: textRange,
|
|
5391
|
-
text: parsed.text.text
|
|
5392
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5272
|
+
text: parsed.text.text
|
|
5393
5273
|
},
|
|
5394
5274
|
label: {
|
|
5395
5275
|
type: "full",
|
|
5396
5276
|
text: parsed.label.text,
|
|
5397
|
-
range: labelRange
|
|
5398
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange)
|
|
5277
|
+
range: labelRange
|
|
5399
5278
|
}
|
|
5400
5279
|
};
|
|
5401
5280
|
}
|
|
@@ -5440,13 +5319,11 @@ function parseListItem(sourceCode, node) {
|
|
|
5440
5319
|
kind: marker.kind,
|
|
5441
5320
|
text: marker.raw,
|
|
5442
5321
|
value: marker.sequence.value,
|
|
5443
|
-
range: markerRange
|
|
5444
|
-
loc: getSourceLocationFromRange(sourceCode, node, markerRange)
|
|
5322
|
+
range: markerRange
|
|
5445
5323
|
} : {
|
|
5446
5324
|
kind: marker.kind,
|
|
5447
5325
|
text: marker.raw,
|
|
5448
|
-
range: markerRange
|
|
5449
|
-
loc: getSourceLocationFromRange(sourceCode, node, markerRange)
|
|
5326
|
+
range: markerRange
|
|
5450
5327
|
};
|
|
5451
5328
|
if (node.checked == null) return {
|
|
5452
5329
|
marker: parsedMarker,
|
|
@@ -5464,8 +5341,7 @@ function parseListItem(sourceCode, node) {
|
|
|
5464
5341
|
marker: parsedMarker,
|
|
5465
5342
|
taskListItemMarker: {
|
|
5466
5343
|
text: sourceCode.text.slice(...taskListItemMarkerRange),
|
|
5467
|
-
range: taskListItemMarkerRange
|
|
5468
|
-
loc: getSourceLocationFromRange(sourceCode, node, taskListItemMarkerRange)
|
|
5344
|
+
range: taskListItemMarkerRange
|
|
5469
5345
|
}
|
|
5470
5346
|
};
|
|
5471
5347
|
}
|
|
@@ -5488,8 +5364,7 @@ function parseMathBlock(sourceCode, node) {
|
|
|
5488
5364
|
const openingSequenceRange = [range[0], range[0] + parsedOpening.openingSequence.length];
|
|
5489
5365
|
const openingSequence = {
|
|
5490
5366
|
text: parsedOpening.openingSequence,
|
|
5491
|
-
range: openingSequenceRange
|
|
5492
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingSequenceRange)
|
|
5367
|
+
range: openingSequenceRange
|
|
5493
5368
|
};
|
|
5494
5369
|
const parsedClosing = parseMathClosingSequenceFromText(text);
|
|
5495
5370
|
if (parsedClosing == null || parsedClosing.closingSequence !== parsedOpening.openingSequence) {
|
|
@@ -5498,8 +5373,7 @@ function parseMathBlock(sourceCode, node) {
|
|
|
5498
5373
|
openingSequence,
|
|
5499
5374
|
content: {
|
|
5500
5375
|
text: text.slice(parsedOpening.after.length),
|
|
5501
|
-
range: contentRange$1
|
|
5502
|
-
loc: getSourceLocationFromRange(sourceCode, node, contentRange$1)
|
|
5376
|
+
range: contentRange$1
|
|
5503
5377
|
},
|
|
5504
5378
|
closingSequence: null,
|
|
5505
5379
|
after: null
|
|
@@ -5508,23 +5382,19 @@ function parseMathBlock(sourceCode, node) {
|
|
|
5508
5382
|
const spaceAfterClosingRange = [range[1] - parsedClosing.after.length, range[1]];
|
|
5509
5383
|
const spaceAfterClosing = {
|
|
5510
5384
|
text: parsedClosing.after,
|
|
5511
|
-
range: spaceAfterClosingRange
|
|
5512
|
-
loc: getSourceLocationFromRange(sourceCode, node, spaceAfterClosingRange)
|
|
5385
|
+
range: spaceAfterClosingRange
|
|
5513
5386
|
};
|
|
5514
5387
|
const closingSequenceRange = [spaceAfterClosing.range[0] - parsedClosing.closingSequence.length, spaceAfterClosing.range[0]];
|
|
5515
5388
|
const closingSequence = {
|
|
5516
5389
|
text: parsedClosing.closingSequence,
|
|
5517
|
-
range: closingSequenceRange
|
|
5518
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingSequenceRange)
|
|
5390
|
+
range: closingSequenceRange
|
|
5519
5391
|
};
|
|
5520
5392
|
const contentRange = [openingSequence.range[1] + parsedOpening.after.length, closingSequence.range[0] - parsedClosing.before.length];
|
|
5521
|
-
const contentText = sourceCode.text.slice(...contentRange);
|
|
5522
5393
|
return {
|
|
5523
5394
|
openingSequence,
|
|
5524
5395
|
content: {
|
|
5525
|
-
text:
|
|
5526
|
-
range: contentRange
|
|
5527
|
-
loc: getSourceLocationFromRange(sourceCode, node, contentRange)
|
|
5396
|
+
text: sourceCode.text.slice(...contentRange),
|
|
5397
|
+
range: contentRange
|
|
5528
5398
|
},
|
|
5529
5399
|
closingSequence,
|
|
5530
5400
|
after: spaceAfterClosing.range[0] < spaceAfterClosing.range[1] ? spaceAfterClosing : null
|
|
@@ -5723,8 +5593,7 @@ var indent_default = createRule("indent", {
|
|
|
5723
5593
|
return this._parsed ??= parseListItem(sourceCode, this.node);
|
|
5724
5594
|
}
|
|
5725
5595
|
getExpectedIndent({ lineNumber, block }) {
|
|
5726
|
-
|
|
5727
|
-
if (lineNumber === loc.start.line) return this.getExpectedIndentForFirstLine();
|
|
5596
|
+
if (lineNumber === this.nodeLoc.start.line) return this.getExpectedIndentForFirstLine();
|
|
5728
5597
|
const expected = this.getExpectedIndentAfterFirstLine();
|
|
5729
5598
|
if (expected === "ignore") return "ignore";
|
|
5730
5599
|
if (!block) return expected;
|
|
@@ -5742,8 +5611,8 @@ var indent_default = createRule("indent", {
|
|
|
5742
5611
|
const baseIndent = getWidth(lineText.slice(0, loc.start.column - 1));
|
|
5743
5612
|
return this._expectedIndentForFirstLine = Math.max(baseIndent + options.listItems.first, baseIndent + parsed.marker.text.length + 1);
|
|
5744
5613
|
}
|
|
5745
|
-
if (options.listItems.relativeTo === "taskListMarkerEnd" && parsed.taskListItemMarker) return this._expectedIndentForFirstLine = getWidth(lineText.slice(0, parsed.taskListItemMarker.
|
|
5746
|
-
return this._expectedIndentForFirstLine = getWidth(lineText.slice(0, parsed.marker.
|
|
5614
|
+
if (options.listItems.relativeTo === "taskListMarkerEnd" && parsed.taskListItemMarker) return this._expectedIndentForFirstLine = getWidth(lineText.slice(0, sourceCode.getLocFromIndex(parsed.taskListItemMarker.range[1]).column - 1)) + options.listItems.first;
|
|
5615
|
+
return this._expectedIndentForFirstLine = getWidth(lineText.slice(0, sourceCode.getLocFromIndex(parsed.marker.range[1]).column - 1)) + options.listItems.first;
|
|
5747
5616
|
}
|
|
5748
5617
|
getExpectedIndentAfterFirstLine() {
|
|
5749
5618
|
if (this._expectedIndentForOtherLines != null) return this._expectedIndentForOtherLines;
|
|
@@ -5768,19 +5637,20 @@ var indent_default = createRule("indent", {
|
|
|
5768
5637
|
return this._expectedIndentForOtherLines = Math.max(baseIndent + options.listItems.other, minimumLineIndent);
|
|
5769
5638
|
}
|
|
5770
5639
|
const parsed = this.getParsedListItem();
|
|
5771
|
-
if (options.listItems.relativeTo === "taskListMarkerEnd" && parsed.taskListItemMarker) return this._expectedIndentForOtherLines = getWidth(lineText.slice(0, parsed.taskListItemMarker.
|
|
5772
|
-
return this._expectedIndentForOtherLines = getWidth(lineText.slice(0, parsed.marker.
|
|
5640
|
+
if (options.listItems.relativeTo === "taskListMarkerEnd" && parsed.taskListItemMarker) return this._expectedIndentForOtherLines = getWidth(lineText.slice(0, sourceCode.getLocFromIndex(parsed.taskListItemMarker.range[1]).column - 1)) + options.listItems.other;
|
|
5641
|
+
return this._expectedIndentForOtherLines = getWidth(lineText.slice(0, sourceCode.getLocFromIndex(parsed.marker.range[1]).column - 1)) + options.listItems.other;
|
|
5773
5642
|
}
|
|
5774
5643
|
getMinimumLineIndent() {
|
|
5775
5644
|
const actualFirstLineIndent = this.getActualFirstLineIndent({ withoutTaskListMarker: true });
|
|
5776
5645
|
if (actualFirstLineIndent != null) return this._expectedIndentForOtherLines = actualFirstLineIndent;
|
|
5777
5646
|
const parsed = this.getParsedListItem();
|
|
5778
|
-
const
|
|
5779
|
-
|
|
5647
|
+
const markerEndLoc = sourceCode.getLocFromIndex(parsed.marker.range[1]);
|
|
5648
|
+
const lineText = sourceCode.lines[markerEndLoc.line - 1];
|
|
5649
|
+
return getWidth(lineText.slice(0, markerEndLoc.column - 1)) + 1;
|
|
5780
5650
|
}
|
|
5781
5651
|
getActualFirstLineIndent({ withoutTaskListMarker = false } = {}) {
|
|
5782
5652
|
const parsed = this.getParsedListItem();
|
|
5783
|
-
const markerEndPos = withoutTaskListMarker ? parsed.marker.
|
|
5653
|
+
const markerEndPos = sourceCode.getLocFromIndex(withoutTaskListMarker ? parsed.marker.range[1] : parsed.taskListItemMarker?.range[1] ?? parsed.marker.range[1]);
|
|
5784
5654
|
const lineText = sourceCode.lines[markerEndPos.line - 1];
|
|
5785
5655
|
const afterMarkerText = lineText.slice(markerEndPos.column - 1);
|
|
5786
5656
|
const trimmedAfterMarkerText = afterMarkerText.trimStart();
|
|
@@ -5966,21 +5836,23 @@ var indent_default = createRule("indent", {
|
|
|
5966
5836
|
});
|
|
5967
5837
|
if (baseIndent === "ignore") return "ignore";
|
|
5968
5838
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
5969
|
-
|
|
5970
|
-
if (lineNumber
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
|
|
5839
|
+
const labelEndLoc = sourceCode.getLocFromIndex(parsed.label.range[1]);
|
|
5840
|
+
if (lineNumber < labelEndLoc.line) return baseIndent + 2;
|
|
5841
|
+
if (lineNumber === labelEndLoc.line) {
|
|
5842
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
5843
|
+
if (lineText == null) return baseIndent;
|
|
5844
|
+
const between = lineText.slice(column - 1, labelEndLoc.column - 2);
|
|
5974
5845
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
5975
5846
|
}
|
|
5976
|
-
if (lineNumber <= parsed.destination.
|
|
5847
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.destination.range[1]).line) return baseIndent + 4;
|
|
5977
5848
|
if (!parsed.title) return baseIndent;
|
|
5978
|
-
if (lineNumber <= parsed.title.
|
|
5979
|
-
|
|
5980
|
-
if (lineNumber
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
|
|
5849
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.title.range[0]).line) return baseIndent + 4;
|
|
5850
|
+
const titleEndLoc = sourceCode.getLocFromIndex(parsed.title.range[1]);
|
|
5851
|
+
if (lineNumber < titleEndLoc.line) return baseIndent + 6;
|
|
5852
|
+
if (lineNumber === titleEndLoc.line) {
|
|
5853
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
5854
|
+
if (lineText == null) return baseIndent;
|
|
5855
|
+
const between = lineText.slice(column - 1, titleEndLoc.column - 2);
|
|
5984
5856
|
return !between || isWhitespace(between) ? baseIndent + 4 : baseIndent + 6;
|
|
5985
5857
|
}
|
|
5986
5858
|
return baseIndent;
|
|
@@ -6010,8 +5882,7 @@ var indent_default = createRule("indent", {
|
|
|
6010
5882
|
* Verify a list node.
|
|
6011
5883
|
*/
|
|
6012
5884
|
function verifyList(node) {
|
|
6013
|
-
|
|
6014
|
-
verifyLinesIndent([loc.start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
5885
|
+
verifyLinesIndent([sourceCode.getLoc(node).start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
6015
5886
|
lineNumber,
|
|
6016
5887
|
block: true
|
|
6017
5888
|
}), additionalFixes);
|
|
@@ -6039,19 +5910,23 @@ var indent_default = createRule("indent", {
|
|
|
6039
5910
|
* Get a fix for a line.
|
|
6040
5911
|
*/
|
|
6041
5912
|
function getFixForLine(lineNumber, actualIndentWidth) {
|
|
6042
|
-
const
|
|
5913
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
5914
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
5915
|
+
line: lineNumber,
|
|
5916
|
+
column: 1
|
|
5917
|
+
});
|
|
6043
5918
|
if (info.expectedIndentWidth > actualIndentWidth) {
|
|
6044
|
-
const before$1 = sliceWidth(
|
|
5919
|
+
const before$1 = sliceWidth(lineText, 0, actualIndentWidth);
|
|
6045
5920
|
const diffWidth = info.expectedIndentWidth - actualIndentWidth;
|
|
6046
|
-
return fixer.insertTextAfterRange([
|
|
5921
|
+
return fixer.insertTextAfterRange([lineStartIndex, lineStartIndex + before$1.length], " ".repeat(diffWidth));
|
|
6047
5922
|
}
|
|
6048
|
-
let before = sliceWidth(
|
|
6049
|
-
let between = sliceWidth(
|
|
5923
|
+
let before = sliceWidth(lineText, 0, info.expectedIndentWidth);
|
|
5924
|
+
let between = sliceWidth(lineText, info.expectedIndentWidth, actualIndentWidth);
|
|
6050
5925
|
while (between && !isSpaceOrTab(between)) {
|
|
6051
5926
|
before += between[0];
|
|
6052
5927
|
between = between.slice(1);
|
|
6053
5928
|
}
|
|
6054
|
-
return fixer.replaceTextRange([
|
|
5929
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + before.length + between.length], before);
|
|
6055
5930
|
}
|
|
6056
5931
|
}
|
|
6057
5932
|
}
|
|
@@ -6072,7 +5947,7 @@ var indent_default = createRule("indent", {
|
|
|
6072
5947
|
const parsed = parseMathBlock(sourceCode, node);
|
|
6073
5948
|
if (!parsed) return;
|
|
6074
5949
|
const loc = sourceCode.getLoc(node);
|
|
6075
|
-
const endLineToBeChecked = parsed.closingSequence && inlineToBeChecked(parsed.closingSequence.
|
|
5950
|
+
const endLineToBeChecked = parsed.closingSequence && inlineToBeChecked(sourceCode.getLocFromIndex(parsed.closingSequence.range[0]));
|
|
6076
5951
|
verifyLinesIndent(endLineToBeChecked ? [loc.start.line, loc.end.line] : [loc.start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
6077
5952
|
lineNumber,
|
|
6078
5953
|
block: true
|
|
@@ -6094,8 +5969,7 @@ var indent_default = createRule("indent", {
|
|
|
6094
5969
|
* Verify a footnote definition node.
|
|
6095
5970
|
*/
|
|
6096
5971
|
function verifyFootnoteDefinition(node) {
|
|
6097
|
-
|
|
6098
|
-
verifyLinesIndent([loc.start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
5972
|
+
verifyLinesIndent([sourceCode.getLoc(node).start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
6099
5973
|
lineNumber,
|
|
6100
5974
|
block: true
|
|
6101
5975
|
}));
|
|
@@ -6138,10 +6012,11 @@ var indent_default = createRule("indent", {
|
|
|
6138
6012
|
const parsed = parseInlineLink(sourceCode, node);
|
|
6139
6013
|
if (!parsed) return;
|
|
6140
6014
|
const lastChild = node.children.at(-1);
|
|
6141
|
-
if (lastChild && parsed.text.
|
|
6015
|
+
if (lastChild && sourceCode.getLocFromIndex(parsed.text.range[0]).line < sourceCode.getLocFromIndex(parsed.text.range[1]).line) {
|
|
6142
6016
|
const lastChildLoc = sourceCode.getLoc(lastChild);
|
|
6143
6017
|
const lastChildEndLine = lastChild.type === "text" && lastChild.value.endsWith("\n") ? lastChildLoc.end.line - 1 : lastChildLoc.end.line;
|
|
6144
|
-
|
|
6018
|
+
const textStartLoc = sourceCode.getLocFromIndex(parsed.text.range[0]);
|
|
6019
|
+
lines = lines.filter((lineNumber) => lineNumber <= textStartLoc.line || lastChildEndLine < lineNumber);
|
|
6145
6020
|
}
|
|
6146
6021
|
verifyLinesIndent(lines, (lineNumber, column) => {
|
|
6147
6022
|
const baseIndent = blockStack.getExpectedIndent({
|
|
@@ -6150,16 +6025,17 @@ var indent_default = createRule("indent", {
|
|
|
6150
6025
|
});
|
|
6151
6026
|
if (baseIndent === "ignore") return "ignore";
|
|
6152
6027
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6153
|
-
if (lineNumber < parsed.text.
|
|
6154
|
-
if (lineNumber <= parsed.openingParen.
|
|
6155
|
-
if (lineNumber <= parsed.destination.
|
|
6028
|
+
if (lineNumber < sourceCode.getLocFromIndex(parsed.text.range[1]).line) return baseIndent + 2;
|
|
6029
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.openingParen.range[1]).line) return baseIndent;
|
|
6030
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.destination.range[1]).line) return baseIndent + 2;
|
|
6156
6031
|
if (!parsed.title) return baseIndent;
|
|
6157
|
-
if (lineNumber <= parsed.title.
|
|
6158
|
-
|
|
6159
|
-
if (lineNumber
|
|
6160
|
-
|
|
6161
|
-
|
|
6162
|
-
|
|
6032
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.title.range[0]).line) return baseIndent + 2;
|
|
6033
|
+
const titleEndLoc = sourceCode.getLocFromIndex(parsed.title.range[1]);
|
|
6034
|
+
if (lineNumber < titleEndLoc.line) return baseIndent + 4;
|
|
6035
|
+
if (lineNumber === titleEndLoc.line) {
|
|
6036
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6037
|
+
if (lineText == null) return baseIndent;
|
|
6038
|
+
const between = lineText.slice(column - 1, titleEndLoc.column - 2);
|
|
6163
6039
|
return !between || isWhitespace(between) ? baseIndent + 2 : baseIndent + 4;
|
|
6164
6040
|
}
|
|
6165
6041
|
return baseIndent;
|
|
@@ -6176,10 +6052,11 @@ var indent_default = createRule("indent", {
|
|
|
6176
6052
|
let lines = lineNumbersFromRange(loc.start.line, loc.end.line);
|
|
6177
6053
|
if (!inlineToBeChecked(loc.start)) lines = lines.slice(1);
|
|
6178
6054
|
const lastChild = node.children.at(-1);
|
|
6179
|
-
if (lastChild && parsed.text.
|
|
6055
|
+
if (lastChild && sourceCode.getLocFromIndex(parsed.text.range[0]).line < sourceCode.getLocFromIndex(parsed.text.range[1]).line) {
|
|
6180
6056
|
const lastChildLoc = sourceCode.getLoc(lastChild);
|
|
6181
6057
|
const lastChildEndLine = lastChild.type === "text" && lastChild.value.endsWith("\n") ? lastChildLoc.end.line - 1 : lastChildLoc.end.line;
|
|
6182
|
-
|
|
6058
|
+
const textStartLoc = sourceCode.getLocFromIndex(parsed.text.range[0]);
|
|
6059
|
+
lines = lines.filter((lineNumber) => lineNumber <= textStartLoc.line || lastChildEndLine < lineNumber);
|
|
6183
6060
|
}
|
|
6184
6061
|
verifyLinesIndent(lines, (lineNumber, column) => {
|
|
6185
6062
|
const baseIndent = blockStack.getExpectedIndent({
|
|
@@ -6188,14 +6065,15 @@ var indent_default = createRule("indent", {
|
|
|
6188
6065
|
});
|
|
6189
6066
|
if (baseIndent === "ignore") return "ignore";
|
|
6190
6067
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6191
|
-
if (lineNumber < parsed.text.
|
|
6068
|
+
if (lineNumber < sourceCode.getLocFromIndex(parsed.text.range[1]).line) return baseIndent + 2;
|
|
6192
6069
|
if (!parsed.label) return baseIndent;
|
|
6193
|
-
if (lineNumber <= parsed.label.
|
|
6194
|
-
|
|
6195
|
-
if (lineNumber
|
|
6196
|
-
|
|
6197
|
-
|
|
6198
|
-
|
|
6070
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.label.range[0]).line) return baseIndent;
|
|
6071
|
+
const labelEndLoc = sourceCode.getLocFromIndex(parsed.label.range[1]);
|
|
6072
|
+
if (lineNumber < labelEndLoc.line) return baseIndent + 2;
|
|
6073
|
+
if (lineNumber === labelEndLoc.line) {
|
|
6074
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6075
|
+
if (lineText == null) return baseIndent;
|
|
6076
|
+
const between = lineText.slice(column - 1, labelEndLoc.column - 2);
|
|
6199
6077
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6200
6078
|
}
|
|
6201
6079
|
return baseIndent;
|
|
@@ -6217,22 +6095,24 @@ var indent_default = createRule("indent", {
|
|
|
6217
6095
|
});
|
|
6218
6096
|
if (baseIndent === "ignore") return "ignore";
|
|
6219
6097
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6220
|
-
|
|
6221
|
-
if (lineNumber
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
|
|
6098
|
+
const textEndLoc = sourceCode.getLocFromIndex(parsed.text.range[1]);
|
|
6099
|
+
if (lineNumber < textEndLoc.line) return baseIndent + 2;
|
|
6100
|
+
if (lineNumber === textEndLoc.line) {
|
|
6101
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6102
|
+
if (lineText == null) return baseIndent;
|
|
6103
|
+
const between = lineText.slice(column - 1, textEndLoc.column - 2);
|
|
6225
6104
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6226
6105
|
}
|
|
6227
|
-
if (lineNumber <= parsed.openingParen.
|
|
6228
|
-
if (lineNumber <= parsed.destination.
|
|
6106
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.openingParen.range[1]).line) return baseIndent;
|
|
6107
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.destination.range[1]).line) return baseIndent + 2;
|
|
6229
6108
|
if (!parsed.title) return baseIndent;
|
|
6230
|
-
if (lineNumber <= parsed.title.
|
|
6231
|
-
|
|
6232
|
-
if (lineNumber
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6109
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.title.range[0]).line) return baseIndent + 2;
|
|
6110
|
+
const titleEndLoc = sourceCode.getLocFromIndex(parsed.title.range[1]);
|
|
6111
|
+
if (lineNumber < titleEndLoc.line) return baseIndent + 4;
|
|
6112
|
+
if (lineNumber === titleEndLoc.line) {
|
|
6113
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6114
|
+
if (lineText == null) return baseIndent;
|
|
6115
|
+
const between = lineText.slice(column - 1, titleEndLoc.column - 2);
|
|
6236
6116
|
return !between || isWhitespace(between) ? baseIndent + 2 : baseIndent + 4;
|
|
6237
6117
|
}
|
|
6238
6118
|
return baseIndent;
|
|
@@ -6254,20 +6134,22 @@ var indent_default = createRule("indent", {
|
|
|
6254
6134
|
});
|
|
6255
6135
|
if (baseIndent === "ignore") return "ignore";
|
|
6256
6136
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6257
|
-
|
|
6258
|
-
if (lineNumber
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
|
|
6137
|
+
const textEndLoc = sourceCode.getLocFromIndex(parsed.text.range[1]);
|
|
6138
|
+
if (lineNumber < textEndLoc.line) return baseIndent + 2;
|
|
6139
|
+
if (lineNumber === textEndLoc.line) {
|
|
6140
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6141
|
+
if (lineText == null) return baseIndent;
|
|
6142
|
+
const between = lineText.slice(column - 1, textEndLoc.column - 2);
|
|
6262
6143
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6263
6144
|
}
|
|
6264
6145
|
if (!parsed.label) return baseIndent;
|
|
6265
|
-
if (lineNumber <= parsed.label.
|
|
6266
|
-
|
|
6267
|
-
if (lineNumber
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
|
|
6146
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.label.range[0]).line) return baseIndent;
|
|
6147
|
+
const labelEndLoc = sourceCode.getLocFromIndex(parsed.label.range[1]);
|
|
6148
|
+
if (lineNumber < labelEndLoc.line) return baseIndent + 2;
|
|
6149
|
+
if (lineNumber === labelEndLoc.line) {
|
|
6150
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6151
|
+
if (lineText == null) return baseIndent;
|
|
6152
|
+
const between = lineText.slice(column - 1, labelEndLoc.column - 2);
|
|
6271
6153
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6272
6154
|
}
|
|
6273
6155
|
return baseIndent;
|
|
@@ -6307,7 +6189,7 @@ var indent_default = createRule("indent", {
|
|
|
6307
6189
|
const lineText = sourceCode.lines[position.line - 1];
|
|
6308
6190
|
if (listItem) {
|
|
6309
6191
|
const parsed = listItem.getParsedListItem();
|
|
6310
|
-
const indentText = lineText.slice((parsed.taskListItemMarker
|
|
6192
|
+
const indentText = lineText.slice(sourceCode.getLocFromIndex((parsed.taskListItemMarker ?? parsed.marker).range[1]).column - 1, position.column - 1);
|
|
6311
6193
|
if (indentText && !isSpaceOrTab(indentText)) return false;
|
|
6312
6194
|
} else if (blockquote) {
|
|
6313
6195
|
if (atWidth(lineText, blockquote.getMarkerIndent()) !== ">") return false;
|
|
@@ -6344,11 +6226,11 @@ var indent_default = createRule("indent", {
|
|
|
6344
6226
|
function verifyLinesIndentFromRoot(lineNumbers, expectedIndentWidthProvider, additionalFixes) {
|
|
6345
6227
|
const reports = [];
|
|
6346
6228
|
for (const lineNumber of lineNumbers) {
|
|
6347
|
-
const
|
|
6348
|
-
if (
|
|
6229
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6230
|
+
if (lineText == null) return;
|
|
6349
6231
|
const listItem = blockStack.getCurrentListItemAtLine(lineNumber);
|
|
6350
6232
|
if (!listItem) {
|
|
6351
|
-
const indentText = /^\s*/u.exec(
|
|
6233
|
+
const indentText = /^\s*/u.exec(lineText)[0];
|
|
6352
6234
|
const actualIndentWidth = getWidth(indentText);
|
|
6353
6235
|
const expectedIndentWidth = expectedIndentWidthProvider(lineNumber, 1);
|
|
6354
6236
|
if (expectedIndentWidth === "ignore") continue;
|
|
@@ -6356,11 +6238,11 @@ var indent_default = createRule("indent", {
|
|
|
6356
6238
|
reports.push({
|
|
6357
6239
|
loc: {
|
|
6358
6240
|
start: {
|
|
6359
|
-
line:
|
|
6241
|
+
line: lineNumber,
|
|
6360
6242
|
column: 1
|
|
6361
6243
|
},
|
|
6362
6244
|
end: {
|
|
6363
|
-
line:
|
|
6245
|
+
line: lineNumber,
|
|
6364
6246
|
column: indentText.length + 1
|
|
6365
6247
|
}
|
|
6366
6248
|
},
|
|
@@ -6370,14 +6252,18 @@ var indent_default = createRule("indent", {
|
|
|
6370
6252
|
actual: actualIndentWidth
|
|
6371
6253
|
},
|
|
6372
6254
|
fix(fixer) {
|
|
6373
|
-
|
|
6255
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6256
|
+
line: lineNumber,
|
|
6257
|
+
column: 1
|
|
6258
|
+
});
|
|
6259
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + indentText.length], " ".repeat(expectedIndentWidth));
|
|
6374
6260
|
},
|
|
6375
6261
|
expectedIndentWidth,
|
|
6376
6262
|
actualIndentWidth
|
|
6377
6263
|
});
|
|
6378
6264
|
continue;
|
|
6379
6265
|
}
|
|
6380
|
-
const report = verifyLineIndentFromListItemMarker(
|
|
6266
|
+
const report = verifyLineIndentFromListItemMarker(lineNumber, listItem, expectedIndentWidthProvider);
|
|
6381
6267
|
if (!report) continue;
|
|
6382
6268
|
reports.push(report);
|
|
6383
6269
|
}
|
|
@@ -6400,16 +6286,16 @@ var indent_default = createRule("indent", {
|
|
|
6400
6286
|
const reports = [];
|
|
6401
6287
|
let cannotFix = false;
|
|
6402
6288
|
for (const lineNumber of lineNumbers) {
|
|
6403
|
-
const
|
|
6404
|
-
if (
|
|
6405
|
-
if (atWidth(
|
|
6289
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6290
|
+
if (lineText == null) return;
|
|
6291
|
+
if (atWidth(lineText, blockquote.getMarkerIndent()) !== ">") {
|
|
6406
6292
|
cannotFix = true;
|
|
6407
6293
|
continue;
|
|
6408
6294
|
}
|
|
6409
6295
|
const listItem = blockStack.getCurrentListItemAtLine(lineNumber);
|
|
6410
6296
|
if (!listItem) {
|
|
6411
|
-
const before =
|
|
6412
|
-
const after =
|
|
6297
|
+
const before = lineText.slice(0, blockquoteLoc.start.column);
|
|
6298
|
+
const after = lineText.slice(blockquoteLoc.start.column);
|
|
6413
6299
|
const indentText = /^\s*/u.exec(after)[0];
|
|
6414
6300
|
const actualIndentWidth = getWidth(before + indentText);
|
|
6415
6301
|
const expectedIndentWidth = expectedIndentWidthProvider(lineNumber, blockquoteLoc.start.column + 1);
|
|
@@ -6419,11 +6305,11 @@ var indent_default = createRule("indent", {
|
|
|
6419
6305
|
reports.push({
|
|
6420
6306
|
loc: {
|
|
6421
6307
|
start: {
|
|
6422
|
-
line:
|
|
6308
|
+
line: lineNumber,
|
|
6423
6309
|
column: blockquoteLoc.start.column + 1
|
|
6424
6310
|
},
|
|
6425
6311
|
end: {
|
|
6426
|
-
line:
|
|
6312
|
+
line: lineNumber,
|
|
6427
6313
|
column: blockquoteLoc.start.column + 1 + indentText.length
|
|
6428
6314
|
}
|
|
6429
6315
|
},
|
|
@@ -6433,14 +6319,18 @@ var indent_default = createRule("indent", {
|
|
|
6433
6319
|
actual: actualIndentWidth - linePrefixWidth
|
|
6434
6320
|
},
|
|
6435
6321
|
fix(fixer) {
|
|
6436
|
-
|
|
6322
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6323
|
+
line: lineNumber,
|
|
6324
|
+
column: 1
|
|
6325
|
+
});
|
|
6326
|
+
return fixer.replaceTextRange([lineStartIndex + blockquoteLoc.start.column, lineStartIndex + blockquoteLoc.start.column + indentText.length], " ".repeat(expectedIndentWidth - linePrefixWidth));
|
|
6437
6327
|
},
|
|
6438
6328
|
expectedIndentWidth,
|
|
6439
6329
|
actualIndentWidth
|
|
6440
6330
|
});
|
|
6441
6331
|
continue;
|
|
6442
6332
|
}
|
|
6443
|
-
const report = verifyLineIndentFromListItemMarker(
|
|
6333
|
+
const report = verifyLineIndentFromListItemMarker(lineNumber, listItem, expectedIndentWidthProvider);
|
|
6444
6334
|
if (!report) continue;
|
|
6445
6335
|
reports.push(report);
|
|
6446
6336
|
}
|
|
@@ -6459,20 +6349,28 @@ var indent_default = createRule("indent", {
|
|
|
6459
6349
|
/**
|
|
6460
6350
|
* Verify the indentation of the line from the list item marker.
|
|
6461
6351
|
*/
|
|
6462
|
-
function verifyLineIndentFromListItemMarker(
|
|
6352
|
+
function verifyLineIndentFromListItemMarker(lineNumber, listItem, expectedIndentWidthProvider) {
|
|
6463
6353
|
const parsed = listItem.getParsedListItem();
|
|
6464
|
-
const markerAfterColumn = (parsed.taskListItemMarker?.
|
|
6465
|
-
const
|
|
6466
|
-
const
|
|
6354
|
+
const markerAfterColumn = sourceCode.getLocFromIndex(parsed.taskListItemMarker?.range[1] ?? parsed.marker.range[1]).column;
|
|
6355
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6356
|
+
const before = lineText.slice(0, markerAfterColumn - 1);
|
|
6357
|
+
const after = lineText.slice(markerAfterColumn - 1);
|
|
6467
6358
|
const indentText = /^\s*/u.exec(after)[0];
|
|
6468
6359
|
const actualIndentWidth = getWidth(before + indentText);
|
|
6469
|
-
const expectedIndentWidth = expectedIndentWidthProvider(
|
|
6360
|
+
const expectedIndentWidth = expectedIndentWidthProvider(lineNumber, markerAfterColumn);
|
|
6470
6361
|
if (expectedIndentWidth === "ignore") return null;
|
|
6471
6362
|
if (actualIndentWidth === expectedIndentWidth) return null;
|
|
6472
6363
|
const linePrefixWidth = getWidth(before);
|
|
6473
|
-
const
|
|
6364
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6365
|
+
line: lineNumber,
|
|
6366
|
+
column: 1
|
|
6367
|
+
});
|
|
6368
|
+
const range = [lineStartIndex + before.length, lineStartIndex + before.length + indentText.length];
|
|
6474
6369
|
return {
|
|
6475
|
-
loc:
|
|
6370
|
+
loc: {
|
|
6371
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
6372
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
6373
|
+
},
|
|
6476
6374
|
messageId: indentText.includes(" ") ? "wrongIndentationFromListMarkerWithTab" : "wrongIndentationFromListMarker",
|
|
6477
6375
|
data: {
|
|
6478
6376
|
expected: expectedIndentWidth - linePrefixWidth,
|
|
@@ -6492,22 +6390,30 @@ var indent_default = createRule("indent", {
|
|
|
6492
6390
|
const loc = sourceCode.getLoc(node);
|
|
6493
6391
|
if (info.loc.start.line !== loc.start.line) return;
|
|
6494
6392
|
for (let lineNumber = fixStartLine; lineNumber <= fixEndLine; lineNumber++) {
|
|
6495
|
-
const
|
|
6496
|
-
if (
|
|
6393
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6394
|
+
if (lineText == null) continue;
|
|
6497
6395
|
if (info.expectedIndentWidth > info.actualIndentWidth) {
|
|
6498
|
-
const before = sliceWidth(
|
|
6499
|
-
const after = sliceWidth(
|
|
6396
|
+
const before = sliceWidth(lineText, 0, info.actualIndentWidth);
|
|
6397
|
+
const after = sliceWidth(lineText, info.actualIndentWidth);
|
|
6500
6398
|
const diffWidth = info.expectedIndentWidth - info.actualIndentWidth;
|
|
6501
|
-
|
|
6399
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6400
|
+
line: lineNumber,
|
|
6401
|
+
column: 1
|
|
6402
|
+
});
|
|
6403
|
+
yield fixer.replaceTextRange([lineStartIndex, lineStartIndex + lineText.length], before + " ".repeat(diffWidth) + after);
|
|
6502
6404
|
} else {
|
|
6503
|
-
let before = sliceWidth(
|
|
6504
|
-
let between = sliceWidth(
|
|
6505
|
-
const after = sliceWidth(
|
|
6405
|
+
let before = sliceWidth(lineText, 0, info.expectedIndentWidth);
|
|
6406
|
+
let between = sliceWidth(lineText, info.expectedIndentWidth, info.actualIndentWidth);
|
|
6407
|
+
const after = sliceWidth(lineText, info.actualIndentWidth);
|
|
6506
6408
|
while (between && !isSpaceOrTab(between)) {
|
|
6507
6409
|
before += between[0];
|
|
6508
6410
|
between = between.slice(1);
|
|
6509
6411
|
}
|
|
6510
|
-
|
|
6412
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6413
|
+
line: lineNumber,
|
|
6414
|
+
column: 1
|
|
6415
|
+
});
|
|
6416
|
+
yield fixer.replaceTextRange([lineStartIndex, lineStartIndex + lineText.length], before + after);
|
|
6511
6417
|
}
|
|
6512
6418
|
}
|
|
6513
6419
|
}
|
|
@@ -6521,14 +6427,13 @@ var indent_default = createRule("indent", {
|
|
|
6521
6427
|
*/
|
|
6522
6428
|
function parseSetextHeading(sourceCode, node) {
|
|
6523
6429
|
if (getHeadingKind(sourceCode, node) !== "setext") return null;
|
|
6524
|
-
const lines = getParsedLines(sourceCode);
|
|
6525
6430
|
const contentLines = [];
|
|
6526
6431
|
const nodeLoc = sourceCode.getLoc(node);
|
|
6527
6432
|
for (let lineNumber = nodeLoc.start.line; lineNumber < nodeLoc.end.line; lineNumber++) {
|
|
6528
|
-
const content = parseContent(
|
|
6433
|
+
const content = parseContent(sourceCode, lineNumber);
|
|
6529
6434
|
contentLines.push(content);
|
|
6530
6435
|
}
|
|
6531
|
-
const underline = parseUnderline(
|
|
6436
|
+
const underline = parseUnderline(sourceCode, nodeLoc.end.line);
|
|
6532
6437
|
if (!underline) return null;
|
|
6533
6438
|
return {
|
|
6534
6439
|
contentLines,
|
|
@@ -6538,12 +6443,13 @@ function parseSetextHeading(sourceCode, node) {
|
|
|
6538
6443
|
/**
|
|
6539
6444
|
* Parse the content line of a setext heading.
|
|
6540
6445
|
*/
|
|
6541
|
-
function parseContent(
|
|
6446
|
+
function parseContent(sourceCode, lineNumber) {
|
|
6447
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6542
6448
|
let prefix = "";
|
|
6543
6449
|
let spaceBefore = "";
|
|
6544
6450
|
let suffix = "";
|
|
6545
|
-
for (let index = 0; index <
|
|
6546
|
-
const c =
|
|
6451
|
+
for (let index = 0; index < lineText.length; index++) {
|
|
6452
|
+
const c = lineText[index];
|
|
6547
6453
|
if (!c.trim()) {
|
|
6548
6454
|
spaceBefore += c;
|
|
6549
6455
|
continue;
|
|
@@ -6553,24 +6459,18 @@ function parseContent(line) {
|
|
|
6553
6459
|
spaceBefore = "";
|
|
6554
6460
|
continue;
|
|
6555
6461
|
}
|
|
6556
|
-
suffix =
|
|
6462
|
+
suffix = lineText.slice(index);
|
|
6557
6463
|
break;
|
|
6558
6464
|
}
|
|
6559
6465
|
const content = suffix.trimEnd();
|
|
6560
6466
|
const spaceAfter = suffix.slice(content.length);
|
|
6467
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6468
|
+
line: lineNumber,
|
|
6469
|
+
column: 1
|
|
6470
|
+
});
|
|
6561
6471
|
return {
|
|
6562
6472
|
text: content,
|
|
6563
|
-
range: [
|
|
6564
|
-
loc: {
|
|
6565
|
-
start: {
|
|
6566
|
-
line: line.line,
|
|
6567
|
-
column: prefix.length + spaceBefore.length + 1
|
|
6568
|
-
},
|
|
6569
|
-
end: {
|
|
6570
|
-
line: line.line,
|
|
6571
|
-
column: prefix.length + spaceBefore.length + content.length + 1
|
|
6572
|
-
}
|
|
6573
|
-
},
|
|
6473
|
+
range: [lineStartIndex + prefix.length + spaceBefore.length, lineStartIndex + lineText.length - spaceAfter.length],
|
|
6574
6474
|
raws: {
|
|
6575
6475
|
prefix,
|
|
6576
6476
|
spaceBefore,
|
|
@@ -6581,14 +6481,15 @@ function parseContent(line) {
|
|
|
6581
6481
|
/**
|
|
6582
6482
|
* Parse the underline of a setext heading.
|
|
6583
6483
|
*/
|
|
6584
|
-
function parseUnderline(
|
|
6484
|
+
function parseUnderline(sourceCode, lineNumber) {
|
|
6485
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6585
6486
|
let marker = null;
|
|
6586
6487
|
let underlineText = "";
|
|
6587
6488
|
let prefix = "";
|
|
6588
6489
|
let spaceBefore = "";
|
|
6589
6490
|
let spaceAfter = "";
|
|
6590
|
-
for (let index =
|
|
6591
|
-
const c =
|
|
6491
|
+
for (let index = lineText.length - 1; index >= 0; index--) {
|
|
6492
|
+
const c = lineText[index];
|
|
6592
6493
|
if (!marker) {
|
|
6593
6494
|
if (c === "=" || c === "-") {
|
|
6594
6495
|
underlineText = c + underlineText;
|
|
@@ -6602,25 +6503,18 @@ function parseUnderline(line) {
|
|
|
6602
6503
|
spaceBefore = "";
|
|
6603
6504
|
} else if (!c.trim()) spaceBefore = c + spaceBefore;
|
|
6604
6505
|
else {
|
|
6605
|
-
prefix =
|
|
6506
|
+
prefix = lineText.slice(0, index + 1);
|
|
6606
6507
|
break;
|
|
6607
6508
|
}
|
|
6608
6509
|
}
|
|
6609
6510
|
if (!marker) return null;
|
|
6610
|
-
const
|
|
6611
|
-
|
|
6612
|
-
|
|
6613
|
-
|
|
6614
|
-
},
|
|
6615
|
-
end: {
|
|
6616
|
-
line: line.line,
|
|
6617
|
-
column: prefix.length + spaceBefore.length + underlineText.length + 1
|
|
6618
|
-
}
|
|
6619
|
-
};
|
|
6511
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6512
|
+
line: lineNumber,
|
|
6513
|
+
column: 1
|
|
6514
|
+
});
|
|
6620
6515
|
return {
|
|
6621
6516
|
text: underlineText,
|
|
6622
|
-
range: [
|
|
6623
|
-
loc: underlineLoc,
|
|
6517
|
+
range: [lineStartIndex + prefix.length + spaceBefore.length, lineStartIndex + lineText.length - spaceAfter.length],
|
|
6624
6518
|
marker,
|
|
6625
6519
|
raws: {
|
|
6626
6520
|
prefix,
|
|
@@ -6682,8 +6576,14 @@ var level1_heading_style_default = createRule("level1-heading-style", {
|
|
|
6682
6576
|
*fix(fixer) {
|
|
6683
6577
|
const heading = parsed.contentLines[0];
|
|
6684
6578
|
yield fixer.insertTextBeforeRange(heading.range, "# ");
|
|
6685
|
-
const
|
|
6686
|
-
yield fixer.removeRange(
|
|
6579
|
+
const underlineLineNumber = sourceCode.getLocFromIndex(parsed.underline.range[0]).line;
|
|
6580
|
+
yield fixer.removeRange([sourceCode.getIndexFromLoc({
|
|
6581
|
+
line: underlineLineNumber,
|
|
6582
|
+
column: 1
|
|
6583
|
+
}), sourceCode.lines.length > underlineLineNumber ? sourceCode.getIndexFromLoc({
|
|
6584
|
+
line: underlineLineNumber + 1,
|
|
6585
|
+
column: 1
|
|
6586
|
+
}) : sourceCode.text.length]);
|
|
6687
6587
|
}
|
|
6688
6588
|
});
|
|
6689
6589
|
} else if (style === "setext") {
|
|
@@ -6696,9 +6596,9 @@ var level1_heading_style_default = createRule("level1-heading-style", {
|
|
|
6696
6596
|
if (!parsed) return;
|
|
6697
6597
|
yield fixer.removeRange([parsed.openingSequence.range[0], parsed.content.range[0]]);
|
|
6698
6598
|
if (parsed.closingSequence) yield fixer.removeRange([parsed.content.range[1], parsed.after?.range[1] ?? parsed.closingSequence.range[1]]);
|
|
6699
|
-
const lines = getParsedLines(sourceCode);
|
|
6700
6599
|
const underline = "=".repeat(Math.max(getTextWidth(parsed.content.text), 3));
|
|
6701
|
-
const
|
|
6600
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
6601
|
+
const appendingText = `\n${sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1)}${underline}`;
|
|
6702
6602
|
yield fixer.insertTextAfter(node, appendingText);
|
|
6703
6603
|
}
|
|
6704
6604
|
});
|
|
@@ -6759,8 +6659,14 @@ var level2_heading_style_default = createRule("level2-heading-style", {
|
|
|
6759
6659
|
*fix(fixer) {
|
|
6760
6660
|
const heading = parsed.contentLines[0];
|
|
6761
6661
|
yield fixer.insertTextBeforeRange(heading.range, "## ");
|
|
6762
|
-
const
|
|
6763
|
-
yield fixer.removeRange(
|
|
6662
|
+
const underlineLineNumber = sourceCode.getLocFromIndex(parsed.underline.range[0]).line;
|
|
6663
|
+
yield fixer.removeRange([sourceCode.getIndexFromLoc({
|
|
6664
|
+
line: underlineLineNumber,
|
|
6665
|
+
column: 1
|
|
6666
|
+
}), sourceCode.lines.length > underlineLineNumber ? sourceCode.getIndexFromLoc({
|
|
6667
|
+
line: underlineLineNumber + 1,
|
|
6668
|
+
column: 1
|
|
6669
|
+
}) : sourceCode.text.length]);
|
|
6764
6670
|
}
|
|
6765
6671
|
});
|
|
6766
6672
|
} else if (style === "setext") {
|
|
@@ -6773,9 +6679,9 @@ var level2_heading_style_default = createRule("level2-heading-style", {
|
|
|
6773
6679
|
if (!parsed) return;
|
|
6774
6680
|
yield fixer.removeRange([parsed.openingSequence.range[0], parsed.content.range[0]]);
|
|
6775
6681
|
if (parsed.closingSequence) yield fixer.removeRange([parsed.content.range[1], parsed.after?.range[1] ?? parsed.closingSequence.range[1]]);
|
|
6776
|
-
const lines = getParsedLines(sourceCode);
|
|
6777
6682
|
const underline = "-".repeat(Math.max(getTextWidth(parsed.content.text), 3));
|
|
6778
|
-
const
|
|
6683
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
6684
|
+
const appendingText = `\n${sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1)}${underline}`;
|
|
6779
6685
|
yield fixer.insertTextAfter(node, appendingText);
|
|
6780
6686
|
}
|
|
6781
6687
|
});
|
|
@@ -6837,8 +6743,7 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6837
6743
|
function verifyNewlineAroundBrackets(node, bracketsRange) {
|
|
6838
6744
|
const newline = optionProvider(bracketsRange);
|
|
6839
6745
|
const openingBracketIndex = bracketsRange[0];
|
|
6840
|
-
|
|
6841
|
-
verifyNewlineAfterOpeningBracket(node, spaceAfterOpeningBracket, openingBracketIndex, newline);
|
|
6746
|
+
verifyNewlineAfterOpeningBracket(node, getSpaceAfterOpeningBracket(openingBracketIndex), openingBracketIndex, newline);
|
|
6842
6747
|
const closingBracketIndex = bracketsRange[1] - 1;
|
|
6843
6748
|
const newlineOptionBeforeClosingBracket = newline === "consistent" ? getSpaceAfterOpeningBracket(bracketsRange[0]).includes("\n") ? "always" : "never" : newline;
|
|
6844
6749
|
verifyNewlineBeforeClosingBracket(node, getSpaceBeforeClosingBracket(closingBracketIndex), openingBracketIndex, closingBracketIndex, newlineOptionBeforeClosingBracket);
|
|
@@ -6849,7 +6754,10 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6849
6754
|
function verifyNewlineAfterOpeningBracket(node, spaceAfterOpeningBracket, openingBracketIndex, newline) {
|
|
6850
6755
|
if (newline === "always") {
|
|
6851
6756
|
if (spaceAfterOpeningBracket.includes("\n")) return;
|
|
6852
|
-
const loc =
|
|
6757
|
+
const loc = {
|
|
6758
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex),
|
|
6759
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1)
|
|
6760
|
+
};
|
|
6853
6761
|
context.report({
|
|
6854
6762
|
node,
|
|
6855
6763
|
loc,
|
|
@@ -6860,7 +6768,10 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6860
6768
|
if (!spaceAfterOpeningBracket.includes("\n")) return;
|
|
6861
6769
|
context.report({
|
|
6862
6770
|
node,
|
|
6863
|
-
loc:
|
|
6771
|
+
loc: {
|
|
6772
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex + 1),
|
|
6773
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1 + spaceAfterOpeningBracket.length)
|
|
6774
|
+
},
|
|
6864
6775
|
messageId: "unexpectedNewlineAfterOpeningBracket",
|
|
6865
6776
|
fix: (fixer) => fixer.replaceTextRange([openingBracketIndex + 1, openingBracketIndex + 1 + spaceAfterOpeningBracket.length], " ")
|
|
6866
6777
|
});
|
|
@@ -6875,18 +6786,24 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6875
6786
|
if (spaceBeforeClosingBracket.includes("\n")) return;
|
|
6876
6787
|
context.report({
|
|
6877
6788
|
node,
|
|
6878
|
-
loc:
|
|
6789
|
+
loc: {
|
|
6790
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex),
|
|
6791
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex + 1)
|
|
6792
|
+
},
|
|
6879
6793
|
messageId: "expectedNewlineBeforeClosingBracket",
|
|
6880
6794
|
fix: (fixer) => {
|
|
6881
|
-
const
|
|
6882
|
-
return fixer.insertTextBeforeRange([closingBracketIndex, closingBracketIndex + 1], `\n${" ".repeat(
|
|
6795
|
+
const openingBracketStartLoc = sourceCode.getLocFromIndex(openingBracketIndex);
|
|
6796
|
+
return fixer.insertTextBeforeRange([closingBracketIndex, closingBracketIndex + 1], `\n${" ".repeat(openingBracketStartLoc.column)}`);
|
|
6883
6797
|
}
|
|
6884
6798
|
});
|
|
6885
6799
|
} else if (newline === "never") {
|
|
6886
6800
|
if (!spaceBeforeClosingBracket.includes("\n")) return;
|
|
6887
6801
|
context.report({
|
|
6888
6802
|
node,
|
|
6889
|
-
loc:
|
|
6803
|
+
loc: {
|
|
6804
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex - spaceBeforeClosingBracket.length),
|
|
6805
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex)
|
|
6806
|
+
},
|
|
6890
6807
|
messageId: "unexpectedNewlineBeforeClosingBracket",
|
|
6891
6808
|
fix: (fixer) => fixer.replaceTextRange([closingBracketIndex - spaceBeforeClosingBracket.length, closingBracketIndex], " ")
|
|
6892
6809
|
});
|
|
@@ -7013,7 +6930,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7013
6930
|
if (space.length > 0) return;
|
|
7014
6931
|
context.report({
|
|
7015
6932
|
node,
|
|
7016
|
-
loc:
|
|
6933
|
+
loc: {
|
|
6934
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex),
|
|
6935
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1)
|
|
6936
|
+
},
|
|
7017
6937
|
messageId: "expectedSpaceAfterOpeningBracket",
|
|
7018
6938
|
fix: (fixer) => fixer.insertTextAfterRange([openingBracketIndex, openingBracketIndex + 1], " ")
|
|
7019
6939
|
});
|
|
@@ -7021,7 +6941,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7021
6941
|
if (space.length === 0) return;
|
|
7022
6942
|
context.report({
|
|
7023
6943
|
node,
|
|
7024
|
-
loc:
|
|
6944
|
+
loc: {
|
|
6945
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex + 1),
|
|
6946
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1 + space.length)
|
|
6947
|
+
},
|
|
7025
6948
|
messageId: "unexpectedSpaceAfterOpeningBracket",
|
|
7026
6949
|
fix: (fixer) => fixer.removeRange([openingBracketIndex + 1, openingBracketIndex + 1 + space.length])
|
|
7027
6950
|
});
|
|
@@ -7038,7 +6961,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7038
6961
|
if (space.length > 0) return;
|
|
7039
6962
|
context.report({
|
|
7040
6963
|
node,
|
|
7041
|
-
loc:
|
|
6964
|
+
loc: {
|
|
6965
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex),
|
|
6966
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex + 1)
|
|
6967
|
+
},
|
|
7042
6968
|
messageId: "expectedSpaceBeforeClosingBracket",
|
|
7043
6969
|
fix: (fixer) => fixer.insertTextBeforeRange([closingBracketIndex, closingBracketIndex + 1], " ")
|
|
7044
6970
|
});
|
|
@@ -7046,7 +6972,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7046
6972
|
if (space.length === 0) return;
|
|
7047
6973
|
context.report({
|
|
7048
6974
|
node,
|
|
7049
|
-
loc:
|
|
6975
|
+
loc: {
|
|
6976
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex - space.length),
|
|
6977
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex)
|
|
6978
|
+
},
|
|
7050
6979
|
messageId: "unexpectedSpaceBeforeClosingBracket",
|
|
7051
6980
|
fix: (fixer) => fixer.removeRange([closingBracketIndex - space.length, closingBracketIndex])
|
|
7052
6981
|
});
|
|
@@ -7180,7 +7109,10 @@ var link_destination_style_default = createRule("link-destination-style", {
|
|
|
7180
7109
|
}
|
|
7181
7110
|
context.report({
|
|
7182
7111
|
node,
|
|
7183
|
-
loc:
|
|
7112
|
+
loc: {
|
|
7113
|
+
start: sourceCode.getLocFromIndex(destination.range[0]),
|
|
7114
|
+
end: sourceCode.getLocFromIndex(destination.range[1])
|
|
7115
|
+
},
|
|
7184
7116
|
messageId: preferStyle.messageId,
|
|
7185
7117
|
*fix(fixer) {
|
|
7186
7118
|
if (destination.type === "bare" && preferStyle.typeName === "pointy-bracketed") {
|
|
@@ -7314,8 +7246,7 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7314
7246
|
*/
|
|
7315
7247
|
function verifyNewlineAroundParens(node, openingParenIndex, closingParenIndex) {
|
|
7316
7248
|
const newline = optionProvider(openingParenIndex, closingParenIndex);
|
|
7317
|
-
|
|
7318
|
-
verifyNewlineAfterOpeningParen(node, spaceAfterOpeningParen, openingParenIndex, newline);
|
|
7249
|
+
verifyNewlineAfterOpeningParen(node, getSpaceAfterOpeningParen(openingParenIndex), openingParenIndex, newline);
|
|
7319
7250
|
const newlineOptionBeforeClosingParen = newline === "consistent" ? getSpaceAfterOpeningParen(openingParenIndex).includes("\n") ? "always" : "never" : newline;
|
|
7320
7251
|
verifyNewlineBeforeClosingParen(node, getSpaceBeforeClosingParen(closingParenIndex), openingParenIndex, closingParenIndex, newlineOptionBeforeClosingParen);
|
|
7321
7252
|
}
|
|
@@ -7325,7 +7256,10 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7325
7256
|
function verifyNewlineAfterOpeningParen(node, spaceAfterOpeningParen, openingParenIndex, newline) {
|
|
7326
7257
|
if (newline === "always") {
|
|
7327
7258
|
if (spaceAfterOpeningParen.includes("\n")) return;
|
|
7328
|
-
const loc =
|
|
7259
|
+
const loc = {
|
|
7260
|
+
start: sourceCode.getLocFromIndex(openingParenIndex),
|
|
7261
|
+
end: sourceCode.getLocFromIndex(openingParenIndex + 1)
|
|
7262
|
+
};
|
|
7329
7263
|
context.report({
|
|
7330
7264
|
node,
|
|
7331
7265
|
loc,
|
|
@@ -7336,7 +7270,10 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7336
7270
|
if (!spaceAfterOpeningParen.includes("\n")) return;
|
|
7337
7271
|
context.report({
|
|
7338
7272
|
node,
|
|
7339
|
-
loc:
|
|
7273
|
+
loc: {
|
|
7274
|
+
start: sourceCode.getLocFromIndex(openingParenIndex + 1),
|
|
7275
|
+
end: sourceCode.getLocFromIndex(openingParenIndex + 1 + spaceAfterOpeningParen.length)
|
|
7276
|
+
},
|
|
7340
7277
|
messageId: "unexpectedNewlineAfterOpeningParen",
|
|
7341
7278
|
fix: (fixer) => fixer.replaceTextRange([openingParenIndex + 1, openingParenIndex + 1 + spaceAfterOpeningParen.length], " ")
|
|
7342
7279
|
});
|
|
@@ -7351,18 +7288,24 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7351
7288
|
if (spaceBeforeClosingParen.includes("\n")) return;
|
|
7352
7289
|
context.report({
|
|
7353
7290
|
node,
|
|
7354
|
-
loc:
|
|
7291
|
+
loc: {
|
|
7292
|
+
start: sourceCode.getLocFromIndex(closingParenIndex),
|
|
7293
|
+
end: sourceCode.getLocFromIndex(closingParenIndex + 1)
|
|
7294
|
+
},
|
|
7355
7295
|
messageId: "expectedNewlineBeforeClosingParen",
|
|
7356
7296
|
fix: (fixer) => {
|
|
7357
|
-
const
|
|
7358
|
-
return fixer.insertTextBeforeRange([closingParenIndex, closingParenIndex + 1], `\n${" ".repeat(
|
|
7297
|
+
const openingParenStartLoc = sourceCode.getLocFromIndex(openingParenIndex);
|
|
7298
|
+
return fixer.insertTextBeforeRange([closingParenIndex, closingParenIndex + 1], `\n${" ".repeat(openingParenStartLoc.column)}`);
|
|
7359
7299
|
}
|
|
7360
7300
|
});
|
|
7361
7301
|
} else if (newline === "never") {
|
|
7362
7302
|
if (!spaceBeforeClosingParen.includes("\n")) return;
|
|
7363
7303
|
context.report({
|
|
7364
7304
|
node,
|
|
7365
|
-
loc:
|
|
7305
|
+
loc: {
|
|
7306
|
+
start: sourceCode.getLocFromIndex(closingParenIndex - spaceBeforeClosingParen.length),
|
|
7307
|
+
end: sourceCode.getLocFromIndex(closingParenIndex)
|
|
7308
|
+
},
|
|
7366
7309
|
messageId: "unexpectedNewlineBeforeClosingParen",
|
|
7367
7310
|
fix: (fixer) => fixer.replaceTextRange([closingParenIndex - spaceBeforeClosingParen.length, closingParenIndex], " ")
|
|
7368
7311
|
});
|
|
@@ -7443,7 +7386,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7443
7386
|
if (space.length > 0) return;
|
|
7444
7387
|
context.report({
|
|
7445
7388
|
node,
|
|
7446
|
-
loc:
|
|
7389
|
+
loc: {
|
|
7390
|
+
start: sourceCode.getLocFromIndex(openingParen.range[0]),
|
|
7391
|
+
end: sourceCode.getLocFromIndex(openingParen.range[1])
|
|
7392
|
+
},
|
|
7447
7393
|
messageId: "expectedSpaceAfterOpeningParen",
|
|
7448
7394
|
fix: (fixer) => fixer.insertTextAfterRange(openingParen.range, " ")
|
|
7449
7395
|
});
|
|
@@ -7451,7 +7397,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7451
7397
|
if (space.length === 0) return;
|
|
7452
7398
|
context.report({
|
|
7453
7399
|
node,
|
|
7454
|
-
loc:
|
|
7400
|
+
loc: {
|
|
7401
|
+
start: sourceCode.getLocFromIndex(openingParen.range[1]),
|
|
7402
|
+
end: sourceCode.getLocFromIndex(openingParen.range[1] + space.length)
|
|
7403
|
+
},
|
|
7455
7404
|
messageId: "unexpectedSpaceAfterOpeningParen",
|
|
7456
7405
|
fix: (fixer) => fixer.removeRange([openingParen.range[1], openingParen.range[1] + space.length])
|
|
7457
7406
|
});
|
|
@@ -7467,7 +7416,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7467
7416
|
if (space.length > 0) return;
|
|
7468
7417
|
context.report({
|
|
7469
7418
|
node,
|
|
7470
|
-
loc:
|
|
7419
|
+
loc: {
|
|
7420
|
+
start: sourceCode.getLocFromIndex(closingParen.range[0]),
|
|
7421
|
+
end: sourceCode.getLocFromIndex(closingParen.range[1])
|
|
7422
|
+
},
|
|
7471
7423
|
messageId: "expectedSpaceBeforeClosingParen",
|
|
7472
7424
|
fix: (fixer) => fixer.insertTextBeforeRange(closingParen.range, " ")
|
|
7473
7425
|
});
|
|
@@ -7475,7 +7427,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7475
7427
|
if (space.length === 0) return;
|
|
7476
7428
|
context.report({
|
|
7477
7429
|
node,
|
|
7478
|
-
loc:
|
|
7430
|
+
loc: {
|
|
7431
|
+
start: sourceCode.getLocFromIndex(closingParen.range[0] - space.length),
|
|
7432
|
+
end: sourceCode.getLocFromIndex(closingParen.range[0])
|
|
7433
|
+
},
|
|
7479
7434
|
messageId: "unexpectedSpaceBeforeClosingParen",
|
|
7480
7435
|
fix: (fixer) => fixer.removeRange([closingParen.range[0] - space.length, closingParen.range[0]])
|
|
7481
7436
|
});
|
|
@@ -7585,7 +7540,10 @@ var link_title_style_default = createRule("link-title-style", {
|
|
|
7585
7540
|
}
|
|
7586
7541
|
context.report({
|
|
7587
7542
|
node,
|
|
7588
|
-
loc:
|
|
7543
|
+
loc: {
|
|
7544
|
+
start: sourceCode.getLocFromIndex(title.range[0]),
|
|
7545
|
+
end: sourceCode.getLocFromIndex(title.range[1])
|
|
7546
|
+
},
|
|
7589
7547
|
messageId: preferStyle.messageId,
|
|
7590
7548
|
*fix(fixer) {
|
|
7591
7549
|
yield fixer.replaceTextRange([title.range[0], title.range[0] + 1], preferStyle.open);
|
|
@@ -7696,13 +7654,15 @@ var list_marker_alignment_default = createRule("list-marker-alignment", {
|
|
|
7696
7654
|
messageId: "incorrectAlignment",
|
|
7697
7655
|
data: messageData,
|
|
7698
7656
|
fix(fixer) {
|
|
7699
|
-
const lines = getParsedLines(sourceCode);
|
|
7700
|
-
const line = lines.get(markerLocation.line);
|
|
7701
7657
|
if (diff < 0) {
|
|
7702
7658
|
const addSpaces = " ".repeat(-diff);
|
|
7703
|
-
|
|
7659
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7660
|
+
line: markerLocation.line,
|
|
7661
|
+
column: 1
|
|
7662
|
+
});
|
|
7663
|
+
return fixer.insertTextBeforeRange([lineStartIndex + markerLocation.start, lineStartIndex + markerLocation.start], addSpaces);
|
|
7704
7664
|
}
|
|
7705
|
-
const beforeItemMarker = line.
|
|
7665
|
+
const beforeItemMarker = sourceCode.lines[markerLocation.line - 1].slice(0, markerLocation.start);
|
|
7706
7666
|
const newWidth = getWidth(beforeItemMarker) - diff;
|
|
7707
7667
|
let newBeforeItemMarker = beforeItemMarker;
|
|
7708
7668
|
while (getWidth(newBeforeItemMarker) > newWidth) {
|
|
@@ -7711,8 +7671,14 @@ var list_marker_alignment_default = createRule("list-marker-alignment", {
|
|
|
7711
7671
|
else return null;
|
|
7712
7672
|
}
|
|
7713
7673
|
if (getWidth(newBeforeItemMarker) < newWidth) newBeforeItemMarker += " ".repeat(newWidth - getWidth(newBeforeItemMarker));
|
|
7714
|
-
const referenceBeforeItemMarker = lines
|
|
7715
|
-
if (!referenceBeforeItemMarker.includes(">") || referenceBeforeItemMarker === newBeforeItemMarker)
|
|
7674
|
+
const referenceBeforeItemMarker = sourceCode.lines[referenceMarkerLocation.line - 1].slice(0, referenceMarkerLocation.start);
|
|
7675
|
+
if (!referenceBeforeItemMarker.includes(">") || referenceBeforeItemMarker === newBeforeItemMarker) {
|
|
7676
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7677
|
+
line: markerLocation.line,
|
|
7678
|
+
column: 1
|
|
7679
|
+
});
|
|
7680
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + markerLocation.start], newBeforeItemMarker);
|
|
7681
|
+
}
|
|
7716
7682
|
return null;
|
|
7717
7683
|
}
|
|
7718
7684
|
});
|
|
@@ -7750,11 +7716,14 @@ var no_implicit_block_closing_default = createRule("no-implicit-block-closing",
|
|
|
7750
7716
|
if (parsed.closingFence) return;
|
|
7751
7717
|
context.report({
|
|
7752
7718
|
node,
|
|
7753
|
-
loc:
|
|
7719
|
+
loc: {
|
|
7720
|
+
start: sourceCode.getLocFromIndex(parsed.openingFence.range[0]),
|
|
7721
|
+
end: sourceCode.getLocFromIndex(parsed.openingFence.range[1])
|
|
7722
|
+
},
|
|
7754
7723
|
messageId: "missingClosingFence",
|
|
7755
7724
|
fix(fixer) {
|
|
7756
|
-
const
|
|
7757
|
-
const prefix = sourceCode.lines[
|
|
7725
|
+
const openingFenceStartLoc = sourceCode.getLocFromIndex(parsed.openingFence.range[0]);
|
|
7726
|
+
const prefix = sourceCode.lines[openingFenceStartLoc.line - 1].slice(0, openingFenceStartLoc.column - 1).replace(/[^\s>]/gu, " ");
|
|
7758
7727
|
const closingFence = parsed.openingFence.text;
|
|
7759
7728
|
return fixer.insertTextAfter(node, `\n${prefix}${closingFence}`);
|
|
7760
7729
|
}
|
|
@@ -7766,11 +7735,14 @@ var no_implicit_block_closing_default = createRule("no-implicit-block-closing",
|
|
|
7766
7735
|
if (parsed.closingSequence) return;
|
|
7767
7736
|
context.report({
|
|
7768
7737
|
node,
|
|
7769
|
-
loc:
|
|
7738
|
+
loc: {
|
|
7739
|
+
start: sourceCode.getLocFromIndex(parsed.openingSequence.range[0]),
|
|
7740
|
+
end: sourceCode.getLocFromIndex(parsed.openingSequence.range[1])
|
|
7741
|
+
},
|
|
7770
7742
|
messageId: "missingClosingMath",
|
|
7771
7743
|
fix(fixer) {
|
|
7772
|
-
const
|
|
7773
|
-
const prefix = sourceCode.lines[
|
|
7744
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
7745
|
+
const prefix = sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1).replace(/[^\s>]/gu, " ");
|
|
7774
7746
|
const closingSequence = parsed.openingSequence.text;
|
|
7775
7747
|
return fixer.insertTextAfter(node, `\n${prefix}${closingSequence}`);
|
|
7776
7748
|
}
|
|
@@ -7782,12 +7754,15 @@ var no_implicit_block_closing_default = createRule("no-implicit-block-closing",
|
|
|
7782
7754
|
if (parsed.closingSequence) return;
|
|
7783
7755
|
context.report({
|
|
7784
7756
|
node,
|
|
7785
|
-
loc:
|
|
7757
|
+
loc: {
|
|
7758
|
+
start: sourceCode.getLocFromIndex(parsed.openingSequence.range[0]),
|
|
7759
|
+
end: sourceCode.getLocFromIndex(parsed.openingSequence.range[1])
|
|
7760
|
+
},
|
|
7786
7761
|
messageId: "missingClosingContainer",
|
|
7787
7762
|
fix(fixer) {
|
|
7788
7763
|
if (withinSameLengthOpeningCustomContainer(sourceCode, node, parsed.openingSequence.text.length)) return null;
|
|
7789
|
-
const
|
|
7790
|
-
const prefix = sourceCode.lines[
|
|
7764
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
7765
|
+
const prefix = sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1).replace(/[^\s>]/gu, " ");
|
|
7791
7766
|
const closingSequence = parsed.openingSequence.text;
|
|
7792
7767
|
return fixer.insertTextAfter(node, `\n${prefix}${closingSequence}`);
|
|
7793
7768
|
}
|
|
@@ -7859,7 +7834,6 @@ var no_laziness_blockquotes_default = createRule("no-laziness-blockquotes", {
|
|
|
7859
7834
|
for (const group of invalidGroups) {
|
|
7860
7835
|
const first = group.lines[0];
|
|
7861
7836
|
const last = group.lines.at(-1);
|
|
7862
|
-
const lines = getParsedLines(sourceCode);
|
|
7863
7837
|
context.report({
|
|
7864
7838
|
loc: {
|
|
7865
7839
|
start: {
|
|
@@ -7868,7 +7842,7 @@ var no_laziness_blockquotes_default = createRule("no-laziness-blockquotes", {
|
|
|
7868
7842
|
},
|
|
7869
7843
|
end: {
|
|
7870
7844
|
line: last.line,
|
|
7871
|
-
column: lines
|
|
7845
|
+
column: sourceCode.lines[last.line - 1].length + 1
|
|
7872
7846
|
}
|
|
7873
7847
|
},
|
|
7874
7848
|
messageId: "lazyBlockquoteLine",
|
|
@@ -7881,15 +7855,21 @@ var no_laziness_blockquotes_default = createRule("no-laziness-blockquotes", {
|
|
|
7881
7855
|
data: { missingMarkers: `${base.level - group.level}` },
|
|
7882
7856
|
*fix(fixer) {
|
|
7883
7857
|
for (const invalidLine of group.lines) {
|
|
7884
|
-
const
|
|
7885
|
-
|
|
7858
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7859
|
+
line: invalidLine.line,
|
|
7860
|
+
column: 1
|
|
7861
|
+
});
|
|
7862
|
+
yield fixer.replaceTextRange([lineStartIndex, lineStartIndex + invalidLine.prefix.length], base.prefix);
|
|
7886
7863
|
}
|
|
7887
7864
|
}
|
|
7888
7865
|
}, {
|
|
7889
7866
|
messageId: "addLineBreak",
|
|
7890
7867
|
fix: (fixer) => {
|
|
7891
|
-
const
|
|
7892
|
-
|
|
7868
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7869
|
+
line: first.line,
|
|
7870
|
+
column: 1
|
|
7871
|
+
});
|
|
7872
|
+
return fixer.insertTextBeforeRange([lineStartIndex, lineStartIndex], `${first.prefix.trimEnd()}\n`);
|
|
7893
7873
|
}
|
|
7894
7874
|
}]
|
|
7895
7875
|
});
|
|
@@ -7950,8 +7930,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7950
7930
|
const headerRow = node.children[0];
|
|
7951
7931
|
const headerRange = sourceCode.getRange(headerRow);
|
|
7952
7932
|
const delimiterEndIndex = node.children.length > 1 ? sourceCode.getRange(node.children[1])[0] : sourceCode.getRange(node)[1];
|
|
7953
|
-
const
|
|
7954
|
-
const parsed = parseTableDelimiterRowFromText(delimiterText);
|
|
7933
|
+
const parsed = parseTableDelimiterRowFromText(sourceCode.text.slice(headerRange[1], delimiterEndIndex));
|
|
7955
7934
|
if (!parsed) return null;
|
|
7956
7935
|
const delimiters = parsed.delimiters.map((d) => {
|
|
7957
7936
|
let leadingPipe = null;
|
|
@@ -7959,8 +7938,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7959
7938
|
const leadingPipeRange = [headerRange[1] + d.leadingPipe.range[0], headerRange[1] + d.leadingPipe.range[1]];
|
|
7960
7939
|
leadingPipe = {
|
|
7961
7940
|
text: d.leadingPipe.text,
|
|
7962
|
-
range: leadingPipeRange
|
|
7963
|
-
loc: getSourceLocationFromRange(sourceCode, headerRow, leadingPipeRange)
|
|
7941
|
+
range: leadingPipeRange
|
|
7964
7942
|
};
|
|
7965
7943
|
}
|
|
7966
7944
|
const delimiterRange = [headerRange[1] + d.delimiter.range[0], headerRange[1] + d.delimiter.range[1]];
|
|
@@ -7969,8 +7947,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7969
7947
|
delimiter: {
|
|
7970
7948
|
text: d.delimiter.text,
|
|
7971
7949
|
align: d.delimiter.text.startsWith(":") ? d.delimiter.text.endsWith(":") ? "center" : "left" : d.delimiter.text.endsWith(":") ? "right" : "none",
|
|
7972
|
-
range: delimiterRange
|
|
7973
|
-
loc: getSourceLocationFromRange(sourceCode, headerRow, delimiterRange)
|
|
7950
|
+
range: delimiterRange
|
|
7974
7951
|
}
|
|
7975
7952
|
};
|
|
7976
7953
|
});
|
|
@@ -7979,8 +7956,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7979
7956
|
const trailingPipeRange = [headerRange[1] + parsed.trailingPipe.range[0], headerRange[1] + parsed.trailingPipe.range[1]];
|
|
7980
7957
|
trailingPipe = {
|
|
7981
7958
|
text: parsed.trailingPipe.text,
|
|
7982
|
-
range: trailingPipeRange
|
|
7983
|
-
loc: getSourceLocationFromRange(sourceCode, headerRow, trailingPipeRange)
|
|
7959
|
+
range: trailingPipeRange
|
|
7984
7960
|
};
|
|
7985
7961
|
}
|
|
7986
7962
|
const firstToken = delimiters[0].leadingPipe ?? delimiters[0].delimiter;
|
|
@@ -7988,11 +7964,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7988
7964
|
return {
|
|
7989
7965
|
delimiters,
|
|
7990
7966
|
trailingPipe,
|
|
7991
|
-
range: [firstToken.range[0], lastToken.range[1]]
|
|
7992
|
-
loc: {
|
|
7993
|
-
start: firstToken.loc.start,
|
|
7994
|
-
end: lastToken.loc.end
|
|
7995
|
-
}
|
|
7967
|
+
range: [firstToken.range[0], lastToken.range[1]]
|
|
7996
7968
|
};
|
|
7997
7969
|
}
|
|
7998
7970
|
/**
|
|
@@ -8020,13 +7992,7 @@ function parseTableRow(sourceCode, node) {
|
|
|
8020
7992
|
if (cell.children.length > 0) {
|
|
8021
7993
|
const firstChild = cell.children[0];
|
|
8022
7994
|
const lastChild = cell.children[cell.children.length - 1];
|
|
8023
|
-
parsedCell = {
|
|
8024
|
-
range: [sourceCode.getRange(firstChild)[0], sourceCode.getRange(lastChild)[1]],
|
|
8025
|
-
loc: {
|
|
8026
|
-
start: sourceCode.getLoc(firstChild).start,
|
|
8027
|
-
end: sourceCode.getLoc(lastChild).end
|
|
8028
|
-
}
|
|
8029
|
-
};
|
|
7995
|
+
parsedCell = { range: [sourceCode.getRange(firstChild)[0], sourceCode.getRange(lastChild)[1]] };
|
|
8030
7996
|
}
|
|
8031
7997
|
cells.push({
|
|
8032
7998
|
leadingPipe,
|
|
@@ -8034,14 +8000,7 @@ function parseTableRow(sourceCode, node) {
|
|
|
8034
8000
|
});
|
|
8035
8001
|
trailingPipe = sourceCode.text[cellRange[1] - 1] === "|" ? {
|
|
8036
8002
|
text: "|",
|
|
8037
|
-
range: [cellRange[1] - 1, cellRange[1]]
|
|
8038
|
-
loc: {
|
|
8039
|
-
start: {
|
|
8040
|
-
line: cellLoc.end.line,
|
|
8041
|
-
column: cellLoc.end.column - 1
|
|
8042
|
-
},
|
|
8043
|
-
end: cellLoc.end
|
|
8044
|
-
}
|
|
8003
|
+
range: [cellRange[1] - 1, cellRange[1]]
|
|
8045
8004
|
} : null;
|
|
8046
8005
|
}
|
|
8047
8006
|
const firstToken = cells[0].leadingPipe ?? cells[0].cell;
|
|
@@ -8049,11 +8008,7 @@ function parseTableRow(sourceCode, node) {
|
|
|
8049
8008
|
return {
|
|
8050
8009
|
cells,
|
|
8051
8010
|
trailingPipe,
|
|
8052
|
-
range: [firstToken.range[0], lastToken.range[1]]
|
|
8053
|
-
loc: {
|
|
8054
|
-
start: firstToken.loc.start,
|
|
8055
|
-
end: lastToken.loc.end
|
|
8056
|
-
}
|
|
8011
|
+
range: [firstToken.range[0], lastToken.range[1]]
|
|
8057
8012
|
};
|
|
8058
8013
|
}
|
|
8059
8014
|
/**
|
|
@@ -8262,8 +8217,7 @@ var no_multi_spaces_default = createRule("no-multi-spaces", {
|
|
|
8262
8217
|
* Verify spaces in a node
|
|
8263
8218
|
*/
|
|
8264
8219
|
function verifyTextInNode(node) {
|
|
8265
|
-
|
|
8266
|
-
verifyTextInRange(node, nodeRange);
|
|
8220
|
+
verifyTextInRange(node, sourceCode.getRange(node));
|
|
8267
8221
|
}
|
|
8268
8222
|
/**
|
|
8269
8223
|
* Process a blockquote node
|
|
@@ -8316,8 +8270,7 @@ var no_multi_spaces_default = createRule("no-multi-spaces", {
|
|
|
8316
8270
|
}
|
|
8317
8271
|
if (spaces.length < 2) continue;
|
|
8318
8272
|
const start = textRange[0] + match.index;
|
|
8319
|
-
const
|
|
8320
|
-
const range = [start, end];
|
|
8273
|
+
const range = [start, start + spaces.length];
|
|
8321
8274
|
if (nodeRange[0] === range[0]) {
|
|
8322
8275
|
let isIndentation = true;
|
|
8323
8276
|
for (let index = nodeRange[0] - 1; index >= 0; index--) {
|
|
@@ -8343,7 +8296,10 @@ var no_multi_spaces_default = createRule("no-multi-spaces", {
|
|
|
8343
8296
|
context.report({
|
|
8344
8297
|
node,
|
|
8345
8298
|
messageId: "multipleSpaces",
|
|
8346
|
-
loc:
|
|
8299
|
+
loc: {
|
|
8300
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
8301
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
8302
|
+
},
|
|
8347
8303
|
fix(fixer) {
|
|
8348
8304
|
return fixer.replaceTextRange(range, " ");
|
|
8349
8305
|
}
|
|
@@ -8417,7 +8373,11 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8417
8373
|
toml: addIgnoreLoc,
|
|
8418
8374
|
json: addIgnoreLoc,
|
|
8419
8375
|
"root:exit"() {
|
|
8420
|
-
const lines =
|
|
8376
|
+
const lines = sourceCode.lines.map((text, index) => ({
|
|
8377
|
+
line: index + 1,
|
|
8378
|
+
text
|
|
8379
|
+
}));
|
|
8380
|
+
if (lines.at(-1)?.text === "") lines.pop();
|
|
8421
8381
|
const bofEmptyLines = [];
|
|
8422
8382
|
while (lines.length) {
|
|
8423
8383
|
if (lines[0].text.trim()) break;
|
|
@@ -8441,7 +8401,7 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8441
8401
|
messageId: "blankBeginningOfFile",
|
|
8442
8402
|
data: { max: maxBOF },
|
|
8443
8403
|
fix(fixer) {
|
|
8444
|
-
return fixer.removeRange(
|
|
8404
|
+
return fixer.removeRange(getRangeFromLines(first.line, last.line));
|
|
8445
8405
|
}
|
|
8446
8406
|
});
|
|
8447
8407
|
}
|
|
@@ -8468,7 +8428,7 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8468
8428
|
messageId: "blankEndOfFile",
|
|
8469
8429
|
data: { max: maxEOF },
|
|
8470
8430
|
fix(fixer) {
|
|
8471
|
-
return fixer.removeRange(
|
|
8431
|
+
return fixer.removeRange(getRangeFromLines(first.line, last.line));
|
|
8472
8432
|
}
|
|
8473
8433
|
});
|
|
8474
8434
|
}
|
|
@@ -8502,13 +8462,25 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8502
8462
|
pluralizedLines: max === 1 ? "line" : "lines"
|
|
8503
8463
|
},
|
|
8504
8464
|
fix(fixer) {
|
|
8505
|
-
return fixer.removeRange(
|
|
8465
|
+
return fixer.removeRange(getRangeFromLines(first.line, last.line));
|
|
8506
8466
|
}
|
|
8507
8467
|
});
|
|
8508
8468
|
}
|
|
8509
8469
|
}
|
|
8510
8470
|
}
|
|
8511
8471
|
};
|
|
8472
|
+
/**
|
|
8473
|
+
* Get the range from the given line numbers (1-based)
|
|
8474
|
+
*/
|
|
8475
|
+
function getRangeFromLines(firstLine, lastLine) {
|
|
8476
|
+
return [sourceCode.getIndexFromLoc({
|
|
8477
|
+
line: firstLine,
|
|
8478
|
+
column: 1
|
|
8479
|
+
}), sourceCode.lines.length > lastLine ? sourceCode.getIndexFromLoc({
|
|
8480
|
+
line: lastLine + 1,
|
|
8481
|
+
column: 1
|
|
8482
|
+
}) : sourceCode.text.length];
|
|
8483
|
+
}
|
|
8512
8484
|
}
|
|
8513
8485
|
});
|
|
8514
8486
|
|
|
@@ -8543,7 +8515,10 @@ var no_text_backslash_linebreak_default = createRule("no-text-backslash-linebrea
|
|
|
8543
8515
|
const backslashRange = [range[1] - 1, range[1]];
|
|
8544
8516
|
context.report({
|
|
8545
8517
|
node,
|
|
8546
|
-
loc:
|
|
8518
|
+
loc: {
|
|
8519
|
+
start: sourceCode.getLocFromIndex(backslashRange[0]),
|
|
8520
|
+
end: sourceCode.getLocFromIndex(backslashRange[1])
|
|
8521
|
+
},
|
|
8547
8522
|
messageId: "textBackslashWithLinebreak",
|
|
8548
8523
|
suggest: [{
|
|
8549
8524
|
messageId: "removeBackslash",
|
|
@@ -8642,7 +8617,10 @@ var no_trailing_spaces_default = createRule("no-trailing-spaces", {
|
|
|
8642
8617
|
if (extraSpaces <= 0) return;
|
|
8643
8618
|
context.report({
|
|
8644
8619
|
node,
|
|
8645
|
-
loc:
|
|
8620
|
+
loc: {
|
|
8621
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
8622
|
+
end: sourceCode.getLocFromIndex(range[0] + extraSpaces)
|
|
8623
|
+
},
|
|
8646
8624
|
messageId: "trailingSpace",
|
|
8647
8625
|
fix(fixer) {
|
|
8648
8626
|
return fixer.removeRange([range[0], range[0] + extraSpaces]);
|
|
@@ -8655,28 +8633,28 @@ var no_trailing_spaces_default = createRule("no-trailing-spaces", {
|
|
|
8655
8633
|
"root:exit"() {
|
|
8656
8634
|
const re = /[^\S\n\r]+$/u;
|
|
8657
8635
|
const skipMatch = /^[^\S\n\r]*$/u;
|
|
8658
|
-
const lines = getParsedLines(sourceCode);
|
|
8659
8636
|
const commentLineNumbers = getCommentLineNumbers();
|
|
8660
|
-
for (const
|
|
8661
|
-
const
|
|
8637
|
+
for (const [lineIndex, lineText] of sourceCode.lines.entries()) {
|
|
8638
|
+
const lineNumber = lineIndex + 1;
|
|
8639
|
+
const matches = re.exec(lineText);
|
|
8662
8640
|
if (!matches) continue;
|
|
8663
8641
|
const location = {
|
|
8664
8642
|
start: {
|
|
8665
|
-
line:
|
|
8643
|
+
line: lineNumber,
|
|
8666
8644
|
column: matches.index + 1
|
|
8667
8645
|
},
|
|
8668
8646
|
end: {
|
|
8669
|
-
line:
|
|
8647
|
+
line: lineNumber,
|
|
8670
8648
|
column: matches.index + 1 + matches[0].length
|
|
8671
8649
|
}
|
|
8672
8650
|
};
|
|
8673
|
-
const range = [
|
|
8651
|
+
const range = [sourceCode.getIndexFromLoc(location.start), sourceCode.getIndexFromLoc(location.end)];
|
|
8674
8652
|
if (ignoreNodes.some((node) => {
|
|
8675
8653
|
const nodeRange = sourceCode.getRange(node);
|
|
8676
8654
|
return nodeRange[0] <= range[0] && range[1] <= nodeRange[1];
|
|
8677
8655
|
})) continue;
|
|
8678
|
-
if (skipBlankLines && skipMatch.test(
|
|
8679
|
-
if (!ignoreComments || !commentLineNumbers.has(
|
|
8656
|
+
if (skipBlankLines && skipMatch.test(lineText)) continue;
|
|
8657
|
+
if (!ignoreComments || !commentLineNumbers.has(lineNumber)) report(location, range);
|
|
8680
8658
|
}
|
|
8681
8659
|
}
|
|
8682
8660
|
};
|
|
@@ -9150,15 +9128,18 @@ var padded_custom_containers_default = createRule("padded-custom-containers", {
|
|
|
9150
9128
|
const lastChild = node.children[node.children.length - 1];
|
|
9151
9129
|
const firstChildLoc = sourceCode.getLoc(firstChild);
|
|
9152
9130
|
const lastChildLoc = sourceCode.getLoc(lastChild);
|
|
9153
|
-
const paddingAfterOpeningLines = firstChildLoc.start.line - openingSequence.
|
|
9154
|
-
const paddingBeforeClosingLines = closingSequence ? closingSequence.
|
|
9131
|
+
const paddingAfterOpeningLines = firstChildLoc.start.line - sourceCode.getLocFromIndex(openingSequence.range[1]).line - 1;
|
|
9132
|
+
const paddingBeforeClosingLines = closingSequence ? sourceCode.getLocFromIndex(closingSequence.range[0]).line - lastChildLoc.end.line - 1 : null;
|
|
9155
9133
|
if (padding === "always") {
|
|
9156
9134
|
if (paddingAfterOpeningLines <= 0) {
|
|
9157
9135
|
const reportEndToken = parsed.info ?? openingSequence;
|
|
9158
9136
|
const reportRange = [openingSequence.range[0], reportEndToken.range[1]];
|
|
9159
9137
|
context.report({
|
|
9160
9138
|
messageId: "expectedPaddingAfterOpeningMarker",
|
|
9161
|
-
loc:
|
|
9139
|
+
loc: {
|
|
9140
|
+
start: sourceCode.getLocFromIndex(reportRange[0]),
|
|
9141
|
+
end: sourceCode.getLocFromIndex(reportRange[1])
|
|
9142
|
+
},
|
|
9162
9143
|
fix(fixer) {
|
|
9163
9144
|
return fixer.insertTextAfterRange(reportRange, "\n");
|
|
9164
9145
|
}
|
|
@@ -9166,33 +9147,62 @@ var padded_custom_containers_default = createRule("padded-custom-containers", {
|
|
|
9166
9147
|
}
|
|
9167
9148
|
if (closingSequence && paddingBeforeClosingLines !== null && paddingBeforeClosingLines <= 0) context.report({
|
|
9168
9149
|
messageId: "expectedPaddingBeforeClosingMarker",
|
|
9169
|
-
loc:
|
|
9150
|
+
loc: {
|
|
9151
|
+
start: sourceCode.getLocFromIndex(closingSequence.range[0]),
|
|
9152
|
+
end: sourceCode.getLocFromIndex(closingSequence.range[1])
|
|
9153
|
+
},
|
|
9170
9154
|
fix(fixer) {
|
|
9171
|
-
return fixer.insertTextBeforeRange([closingSequence.range[0] - closingSequence.
|
|
9155
|
+
return fixer.insertTextBeforeRange([closingSequence.range[0] - sourceCode.getLocFromIndex(closingSequence.range[0]).column + 1, closingSequence.range[1]], "\n");
|
|
9172
9156
|
}
|
|
9173
9157
|
});
|
|
9174
9158
|
} else if (padding === "never") {
|
|
9175
9159
|
if (paddingAfterOpeningLines > 0) {
|
|
9176
|
-
const
|
|
9177
|
-
const
|
|
9178
|
-
|
|
9179
|
-
|
|
9160
|
+
const startLineNumber = sourceCode.getLocFromIndex(openingSequence.range[1]).line + 1;
|
|
9161
|
+
const removeRange = [sourceCode.getIndexFromLoc({
|
|
9162
|
+
line: startLineNumber,
|
|
9163
|
+
column: 1
|
|
9164
|
+
}), sourceCode.getIndexFromLoc({
|
|
9165
|
+
line: firstChildLoc.start.line,
|
|
9166
|
+
column: 1
|
|
9167
|
+
})];
|
|
9180
9168
|
context.report({
|
|
9181
9169
|
messageId: "unexpectedPaddingAfterOpeningMarker",
|
|
9182
|
-
loc:
|
|
9170
|
+
loc: {
|
|
9171
|
+
start: {
|
|
9172
|
+
line: startLineNumber,
|
|
9173
|
+
column: 1
|
|
9174
|
+
},
|
|
9175
|
+
end: {
|
|
9176
|
+
line: firstChildLoc.start.line,
|
|
9177
|
+
column: 1
|
|
9178
|
+
}
|
|
9179
|
+
},
|
|
9183
9180
|
fix(fixer) {
|
|
9184
9181
|
return fixer.removeRange(removeRange);
|
|
9185
9182
|
}
|
|
9186
9183
|
});
|
|
9187
9184
|
}
|
|
9188
9185
|
if (closingSequence && paddingBeforeClosingLines !== null && paddingBeforeClosingLines > 0) {
|
|
9189
|
-
const
|
|
9190
|
-
const
|
|
9191
|
-
|
|
9192
|
-
|
|
9186
|
+
const closingSequenceStartLoc = sourceCode.getLocFromIndex(closingSequence.range[0]);
|
|
9187
|
+
const removeRange = [sourceCode.getIndexFromLoc({
|
|
9188
|
+
line: lastChildLoc.end.line + 1,
|
|
9189
|
+
column: 1
|
|
9190
|
+
}), sourceCode.getIndexFromLoc({
|
|
9191
|
+
line: closingSequenceStartLoc.line,
|
|
9192
|
+
column: 1
|
|
9193
|
+
})];
|
|
9193
9194
|
context.report({
|
|
9194
9195
|
messageId: "unexpectedPaddingBeforeClosingMarker",
|
|
9195
|
-
loc:
|
|
9196
|
+
loc: {
|
|
9197
|
+
start: {
|
|
9198
|
+
line: lastChildLoc.end.line + 1,
|
|
9199
|
+
column: 1
|
|
9200
|
+
},
|
|
9201
|
+
end: {
|
|
9202
|
+
line: closingSequenceStartLoc.line,
|
|
9203
|
+
column: 1
|
|
9204
|
+
}
|
|
9205
|
+
},
|
|
9196
9206
|
fix(fixer) {
|
|
9197
9207
|
return fixer.removeRange(removeRange);
|
|
9198
9208
|
}
|
|
@@ -9295,8 +9305,7 @@ const BLOCK_TYPE_MAP = {
|
|
|
9295
9305
|
* Get the block type of a node
|
|
9296
9306
|
*/
|
|
9297
9307
|
function getBlockType(node) {
|
|
9298
|
-
const
|
|
9299
|
-
const blockType = BLOCK_TYPE_MAP[nodeType];
|
|
9308
|
+
const blockType = BLOCK_TYPE_MAP[node.type];
|
|
9300
9309
|
if (blockType) return blockType;
|
|
9301
9310
|
return null;
|
|
9302
9311
|
}
|
|
@@ -9422,6 +9431,7 @@ var padding_line_between_blocks_default = createRule("padding-line-between-block
|
|
|
9422
9431
|
for (let i = 0; i < containerNode.children.length - 1; i++) {
|
|
9423
9432
|
const prevBlock = containerNode.children[i];
|
|
9424
9433
|
const nextBlock = containerNode.children[i + 1];
|
|
9434
|
+
if (isIgnore(prevBlock)) continue;
|
|
9425
9435
|
const expected = getExpectedPadding(prevBlock, nextBlock);
|
|
9426
9436
|
if (expected === null) continue;
|
|
9427
9437
|
const prevLoc = sourceCode.getLoc(prevBlock);
|
|
@@ -9476,10 +9486,14 @@ var padding_line_between_blocks_default = createRule("padding-line-between-block
|
|
|
9476
9486
|
const startNext = sourceCode.getRange(nextBlock)[0] - nextLoc.start.column;
|
|
9477
9487
|
return fixer.insertTextBeforeRange([startNext, startNext], text);
|
|
9478
9488
|
}
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9489
|
+
if (prevLoc.end.line + 1 < nextLoc.start.line) return fixer.removeRange([sourceCode.getIndexFromLoc({
|
|
9490
|
+
line: prevLoc.end.line + 1,
|
|
9491
|
+
column: 1
|
|
9492
|
+
}), sourceCode.getIndexFromLoc({
|
|
9493
|
+
line: nextLoc.start.line,
|
|
9494
|
+
column: 1
|
|
9495
|
+
})]);
|
|
9496
|
+
return null;
|
|
9483
9497
|
}
|
|
9484
9498
|
});
|
|
9485
9499
|
}
|
|
@@ -9493,6 +9507,21 @@ var padding_line_between_blocks_default = createRule("padding-line-between-block
|
|
|
9493
9507
|
containerStack.shift();
|
|
9494
9508
|
}
|
|
9495
9509
|
};
|
|
9510
|
+
/**
|
|
9511
|
+
* Check if the previous block is ignored
|
|
9512
|
+
*/
|
|
9513
|
+
function isIgnore(prevBlock) {
|
|
9514
|
+
if (prevBlock.type === "html") {
|
|
9515
|
+
const comments = getHTMLComments(sourceCode, prevBlock);
|
|
9516
|
+
const loc = sourceCode.getLoc(prevBlock);
|
|
9517
|
+
for (const comment of comments) {
|
|
9518
|
+
const value = comment.value;
|
|
9519
|
+
if (!/^\s*(?:eslint|markdownlint)-disable-next-line\b/u.test(value)) continue;
|
|
9520
|
+
if (sourceCode.getLocFromIndex(comment.range[1]).line === loc.end.line) return true;
|
|
9521
|
+
}
|
|
9522
|
+
}
|
|
9523
|
+
return false;
|
|
9524
|
+
}
|
|
9496
9525
|
}
|
|
9497
9526
|
});
|
|
9498
9527
|
|
|
@@ -9560,16 +9589,19 @@ var prefer_fenced_code_blocks_default = createRule("prefer-fenced-code-blocks",
|
|
|
9560
9589
|
messageId: "useFencedCodeBlock",
|
|
9561
9590
|
fix(fixer) {
|
|
9562
9591
|
if (!isFixableIndentedCodeBlock(node)) return null;
|
|
9563
|
-
const lines = getParsedLines(sourceCode);
|
|
9564
9592
|
const startColumnOffset = loc.start.column - 1;
|
|
9565
9593
|
const removeRanges = [];
|
|
9566
9594
|
let prefixText = null;
|
|
9567
9595
|
for (let line = loc.start.line; line <= loc.end.line; line++) {
|
|
9568
|
-
const
|
|
9569
|
-
const currentPrefix = normalizePrefix(
|
|
9596
|
+
const lineText = sourceCode.lines[line - 1];
|
|
9597
|
+
const currentPrefix = normalizePrefix(lineText.slice(0, startColumnOffset));
|
|
9570
9598
|
if (!prefixText) prefixText = currentPrefix;
|
|
9571
9599
|
else if (currentPrefix !== prefixText) return null;
|
|
9572
|
-
|
|
9600
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
9601
|
+
line,
|
|
9602
|
+
column: 1
|
|
9603
|
+
});
|
|
9604
|
+
let removeRange = [lineStartIndex + startColumnOffset, lineStartIndex + startColumnOffset + 4];
|
|
9573
9605
|
for (let index = removeRange[0]; index < removeRange[1]; index++) {
|
|
9574
9606
|
const c = sourceCode.text[index];
|
|
9575
9607
|
if (c === " ") continue;
|
|
@@ -9581,8 +9613,14 @@ var prefer_fenced_code_blocks_default = createRule("prefer-fenced-code-blocks",
|
|
|
9581
9613
|
}
|
|
9582
9614
|
removeRanges.push(removeRange);
|
|
9583
9615
|
}
|
|
9584
|
-
const beginFenceInsertOffset =
|
|
9585
|
-
|
|
9616
|
+
const beginFenceInsertOffset = sourceCode.getIndexFromLoc({
|
|
9617
|
+
line: loc.start.line,
|
|
9618
|
+
column: 1
|
|
9619
|
+
});
|
|
9620
|
+
const endFenceInsertOffset = sourceCode.lines.length > loc.end.line ? sourceCode.getIndexFromLoc({
|
|
9621
|
+
line: loc.end.line + 1,
|
|
9622
|
+
column: 1
|
|
9623
|
+
}) : sourceCode.text.length;
|
|
9586
9624
|
return [
|
|
9587
9625
|
fixer.insertTextBeforeRange([beginFenceInsertOffset, beginFenceInsertOffset], `${prefixText}\`\`\`\n`),
|
|
9588
9626
|
...removeRanges.map((removeRange) => fixer.removeRange(removeRange)),
|
|
@@ -9596,12 +9634,11 @@ var prefer_fenced_code_blocks_default = createRule("prefer-fenced-code-blocks",
|
|
|
9596
9634
|
*/
|
|
9597
9635
|
function isFixableIndentedCodeBlock(node) {
|
|
9598
9636
|
if (!node.value.startsWith(" ")) return true;
|
|
9599
|
-
const lines = getParsedLines(sourceCode);
|
|
9600
9637
|
const loc = sourceCode.getLoc(node);
|
|
9601
|
-
const
|
|
9638
|
+
const firstLineText = sourceCode.lines[loc.start.line - 1];
|
|
9602
9639
|
const codeBlockFirstLine = normalizePrefix(node.value.split(/\r?\n/u)[0]);
|
|
9603
9640
|
const startColumnOffset = loc.start.column - 1;
|
|
9604
|
-
return normalizePrefix(
|
|
9641
|
+
return normalizePrefix(firstLineText.slice(startColumnOffset)).startsWith(codeBlockFirstLine);
|
|
9605
9642
|
}
|
|
9606
9643
|
}
|
|
9607
9644
|
});
|
|
@@ -9632,10 +9669,8 @@ function* iterateSearchWords({ sourceCode, node, words, ignores }) {
|
|
|
9632
9669
|
startPosition = index + word.length;
|
|
9633
9670
|
if (!RE_BOUNDARY.test(text[index - 1] || "") || !RE_BOUNDARY.test(text[index + word.length] || "")) continue;
|
|
9634
9671
|
const [nodeStart] = sourceCode.getRange(node);
|
|
9635
|
-
const range = [nodeStart + index, nodeStart + index + word.length];
|
|
9636
9672
|
yield {
|
|
9637
|
-
|
|
9638
|
-
range,
|
|
9673
|
+
range: [nodeStart + index, nodeStart + index + word.length],
|
|
9639
9674
|
word
|
|
9640
9675
|
};
|
|
9641
9676
|
}
|
|
@@ -9740,7 +9775,7 @@ var prefer_inline_code_words_default = createRule("prefer-inline-code-words", {
|
|
|
9740
9775
|
if (shortcutLinkReference === node) shortcutLinkReference = null;
|
|
9741
9776
|
},
|
|
9742
9777
|
text(node) {
|
|
9743
|
-
for (const { word,
|
|
9778
|
+
for (const { word, range } of iterateSearchWords({
|
|
9744
9779
|
sourceCode,
|
|
9745
9780
|
node,
|
|
9746
9781
|
words,
|
|
@@ -9749,7 +9784,10 @@ var prefer_inline_code_words_default = createRule("prefer-inline-code-words", {
|
|
|
9749
9784
|
const shortcutLinkReferenceToReport = shortcutLinkReference;
|
|
9750
9785
|
context.report({
|
|
9751
9786
|
node,
|
|
9752
|
-
loc
|
|
9787
|
+
loc: {
|
|
9788
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
9789
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
9790
|
+
},
|
|
9753
9791
|
messageId: "requireInlineCode",
|
|
9754
9792
|
data: { name: word },
|
|
9755
9793
|
*fix(fixer) {
|
|
@@ -9827,7 +9865,7 @@ var prefer_link_reference_definitions_default = createRule("prefer-link-referenc
|
|
|
9827
9865
|
while (definitions.some((def) => def.identifier === identifier)) identifier = `${original}-${++seq}`;
|
|
9828
9866
|
}
|
|
9829
9867
|
}
|
|
9830
|
-
yield fixer.
|
|
9868
|
+
yield fixer.replaceTextRange([linkInfo.bracketsRange[0], sourceCode.getRange(link)[1]], `${sourceCode.text.slice(...linkInfo.bracketsRange)}${identifier === linkInfo.label ? "" : `[${identifier}]`}`);
|
|
9831
9869
|
if (!definition) {
|
|
9832
9870
|
const linkRange = sourceCode.getRange(link);
|
|
9833
9871
|
const nextSectionHeading = headings.find((heading) => linkRange[1] < sourceCode.getRange(heading)[0]);
|
|
@@ -9893,21 +9931,17 @@ var prefer_link_reference_definitions_default = createRule("prefer-link-referenc
|
|
|
9893
9931
|
const range = sourceCode.getRange(link);
|
|
9894
9932
|
if (link.type === "link") {
|
|
9895
9933
|
const bracketsRange$1 = getLinkBracketsRange(link);
|
|
9896
|
-
const linkLabelText$1 = sourceCode.text.slice(...bracketsRange$1).slice(1, -1).trim();
|
|
9897
|
-
const urlStartIndex$1 = sourceCode.text.indexOf("(", bracketsRange$1[1]);
|
|
9898
9934
|
return {
|
|
9899
|
-
label:
|
|
9935
|
+
label: sourceCode.text.slice(...bracketsRange$1).slice(1, -1).trim(),
|
|
9900
9936
|
bracketsRange: bracketsRange$1,
|
|
9901
|
-
urlAndTitleRange: [
|
|
9937
|
+
urlAndTitleRange: [sourceCode.text.indexOf("(", bracketsRange$1[1]), range[1]]
|
|
9902
9938
|
};
|
|
9903
9939
|
}
|
|
9904
9940
|
const bracketsRange = getImageBracketsRange(link);
|
|
9905
|
-
const linkLabelText = sourceCode.text.slice(...bracketsRange).slice(1, -1).trim();
|
|
9906
|
-
const urlStartIndex = sourceCode.text.indexOf("(", bracketsRange[1]);
|
|
9907
9941
|
return {
|
|
9908
|
-
label:
|
|
9942
|
+
label: sourceCode.text.slice(...bracketsRange).slice(1, -1).trim(),
|
|
9909
9943
|
bracketsRange,
|
|
9910
|
-
urlAndTitleRange: [
|
|
9944
|
+
urlAndTitleRange: [sourceCode.text.indexOf("(", bracketsRange[1]), range[1]]
|
|
9911
9945
|
};
|
|
9912
9946
|
}
|
|
9913
9947
|
/**
|
|
@@ -9995,7 +10029,7 @@ var prefer_linked_words_default = createRule("prefer-linked-words", {
|
|
|
9995
10029
|
},
|
|
9996
10030
|
text(node) {
|
|
9997
10031
|
if (linkedNode) return;
|
|
9998
|
-
for (const { word,
|
|
10032
|
+
for (const { word, range } of iterateSearchWords({
|
|
9999
10033
|
sourceCode,
|
|
10000
10034
|
node,
|
|
10001
10035
|
words,
|
|
@@ -10004,7 +10038,10 @@ var prefer_linked_words_default = createRule("prefer-linked-words", {
|
|
|
10004
10038
|
const link = links[word];
|
|
10005
10039
|
context.report({
|
|
10006
10040
|
node,
|
|
10007
|
-
loc
|
|
10041
|
+
loc: {
|
|
10042
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
10043
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
10044
|
+
},
|
|
10008
10045
|
messageId: "requireLink",
|
|
10009
10046
|
data: { name: word },
|
|
10010
10047
|
fix: link ? (fixer) => {
|
|
@@ -10120,7 +10157,10 @@ var setext_heading_underline_length_default = createRule("setext-heading-underli
|
|
|
10120
10157
|
context.report({
|
|
10121
10158
|
node,
|
|
10122
10159
|
messageId,
|
|
10123
|
-
loc:
|
|
10160
|
+
loc: {
|
|
10161
|
+
start: sourceCode.getLocFromIndex(parsed.underline.range[0]),
|
|
10162
|
+
end: sourceCode.getLocFromIndex(parsed.underline.range[1])
|
|
10163
|
+
},
|
|
10124
10164
|
data: { expectedLength: String(expectedLength) },
|
|
10125
10165
|
fix(fixer) {
|
|
10126
10166
|
const newUnderline = parsed.underline.marker.repeat(expectedLength);
|
|
@@ -10216,7 +10256,7 @@ var setext_heading_underline_length_default = createRule("setext-heading-underli
|
|
|
10216
10256
|
for (const node of setextHeadings) {
|
|
10217
10257
|
const parsed = getParsedSetextHeading(node);
|
|
10218
10258
|
if (!parsed) continue;
|
|
10219
|
-
expectedLineLength = Math.max(parsed.underline.
|
|
10259
|
+
expectedLineLength = Math.max(sourceCode.getLocFromIndex(parsed.underline.range[1]).column - 1, minimumRequiredLineLength);
|
|
10220
10260
|
break;
|
|
10221
10261
|
}
|
|
10222
10262
|
} else if (align === "exact") for (const node of setextHeadings) {
|
|
@@ -10230,13 +10270,14 @@ var setext_heading_underline_length_default = createRule("setext-heading-underli
|
|
|
10230
10270
|
const parsed = getParsedSetextHeading(node);
|
|
10231
10271
|
if (!parsed) continue;
|
|
10232
10272
|
maxLineWidth = Math.max(maxLineWidth, getMaxHeaderLineWidth(parsed));
|
|
10233
|
-
expectedLineLength = Math.max(expectedLineLength, parsed.underline.
|
|
10273
|
+
expectedLineLength = Math.max(expectedLineLength, sourceCode.getLocFromIndex(parsed.underline.range[1]).column - 1);
|
|
10234
10274
|
}
|
|
10235
10275
|
if (expectedLineLength < maxLineWidth) expectedLineLength = maxLineWidth;
|
|
10236
10276
|
else for (const node of setextHeadings) {
|
|
10237
10277
|
const parsed = getParsedSetextHeading(node);
|
|
10238
10278
|
if (!parsed) continue;
|
|
10239
|
-
|
|
10279
|
+
const underlineEndLoc = sourceCode.getLocFromIndex(parsed.underline.range[1]);
|
|
10280
|
+
if (maxLineWidth <= underlineEndLoc.column - 1) expectedLineLength = Math.min(expectedLineLength, underlineEndLoc.column - 1);
|
|
10240
10281
|
}
|
|
10241
10282
|
} else if (align === "length") expectedLineLength = Math.max(fixedLength, minimumRequiredLineLength);
|
|
10242
10283
|
else return;
|
|
@@ -10417,13 +10458,12 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10417
10458
|
const previousNodes = definitions.slice(previousNodeIndex, targetNodeIndex);
|
|
10418
10459
|
const before = definitions.slice(0, previousNodeIndex);
|
|
10419
10460
|
const after = definitions.slice(targetNodeIndex + 1);
|
|
10420
|
-
|
|
10461
|
+
return fixReplaceDefinitions(fixer, definitions, [
|
|
10421
10462
|
...before,
|
|
10422
10463
|
node,
|
|
10423
10464
|
...previousNodes,
|
|
10424
10465
|
...after
|
|
10425
|
-
];
|
|
10426
|
-
return fixReplaceDefinitions(fixer, definitions, movedNodes);
|
|
10466
|
+
]);
|
|
10427
10467
|
}
|
|
10428
10468
|
});
|
|
10429
10469
|
}
|
|
@@ -10444,13 +10484,12 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10444
10484
|
const nextNodes = definitions.slice(targetNodeIndex + 1, nextNodeIndex + 1);
|
|
10445
10485
|
const before = definitions.slice(0, targetNodeIndex);
|
|
10446
10486
|
const after = definitions.slice(nextNodeIndex + 1);
|
|
10447
|
-
|
|
10487
|
+
return fixReplaceDefinitions(fixer, definitions, [
|
|
10448
10488
|
...before,
|
|
10449
10489
|
...nextNodes,
|
|
10450
10490
|
node,
|
|
10451
10491
|
...after
|
|
10452
|
-
];
|
|
10453
|
-
return fixReplaceDefinitions(fixer, definitions, movedNodes);
|
|
10492
|
+
]);
|
|
10454
10493
|
}
|
|
10455
10494
|
});
|
|
10456
10495
|
}
|
|
@@ -10492,8 +10531,13 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10492
10531
|
const oldNextNode = definitions[index + 1];
|
|
10493
10532
|
const oldNextLoc = sourceCode.getLoc(oldNextNode);
|
|
10494
10533
|
if (oldNextLoc.start.line - linkLoc.end.line > 1) {
|
|
10495
|
-
|
|
10496
|
-
|
|
10534
|
+
if (!sourceCode.lines[oldNextLoc.start.line - 2].replaceAll(">", "").trim()) removeLine = [sourceCode.getIndexFromLoc({
|
|
10535
|
+
line: oldNextLoc.start.line - 1,
|
|
10536
|
+
column: 1
|
|
10537
|
+
}), sourceCode.getIndexFromLoc({
|
|
10538
|
+
line: oldNextLoc.start.line,
|
|
10539
|
+
column: 1
|
|
10540
|
+
})];
|
|
10497
10541
|
}
|
|
10498
10542
|
}
|
|
10499
10543
|
}
|
|
@@ -10505,8 +10549,7 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10505
10549
|
*/
|
|
10506
10550
|
function verify(definitions) {
|
|
10507
10551
|
if (definitions.length === 0) return;
|
|
10508
|
-
const
|
|
10509
|
-
const editScript = calcShortestEditScript(definitions, sorted);
|
|
10552
|
+
const editScript = calcShortestEditScript(definitions, [...definitions].sort(option.compare));
|
|
10510
10553
|
for (let index = 0; index < editScript.length; index++) {
|
|
10511
10554
|
const edit = editScript[index];
|
|
10512
10555
|
if (edit.type !== "delete") continue;
|
|
@@ -10616,14 +10659,14 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10616
10659
|
}
|
|
10617
10660
|
/** Compile order option */
|
|
10618
10661
|
function compileOption(orderOption) {
|
|
10619
|
-
const cache$
|
|
10662
|
+
const cache$1 = /* @__PURE__ */ new Map();
|
|
10620
10663
|
const compiled = compileOptionWithoutCache(orderOption);
|
|
10621
10664
|
return {
|
|
10622
10665
|
match: (node) => {
|
|
10623
|
-
const cached = cache$
|
|
10666
|
+
const cached = cache$1.get(node);
|
|
10624
10667
|
if (cached != null) return cached;
|
|
10625
10668
|
const result = compiled.match(node);
|
|
10626
|
-
cache$
|
|
10669
|
+
cache$1.set(node, result);
|
|
10627
10670
|
return result;
|
|
10628
10671
|
},
|
|
10629
10672
|
sort: compiled.sort
|
|
@@ -10825,14 +10868,14 @@ var table_header_casing_default = createRule("table-header-casing", {
|
|
|
10825
10868
|
* Check text node and report word-level errors
|
|
10826
10869
|
*/
|
|
10827
10870
|
function checkTextNode(node, firstNode, lastNode) {
|
|
10828
|
-
const
|
|
10829
|
-
const wordAndOffsets = parseWordsFromText(text, firstNode, lastNode);
|
|
10871
|
+
const wordAndOffsets = parseWordsFromText(sourceCode.getText(node), firstNode, lastNode);
|
|
10830
10872
|
const processed = /* @__PURE__ */ new Set();
|
|
10831
10873
|
for (let index = 0; index < wordAndOffsets.length; index++) {
|
|
10832
10874
|
if (processed.has(index)) continue;
|
|
10833
10875
|
processed.add(index);
|
|
10834
10876
|
const wordAndOffset = wordAndOffsets[index];
|
|
10835
10877
|
if (wordAndOffset.punctuation) continue;
|
|
10878
|
+
if (wordAndOffset.wellknownWord) continue;
|
|
10836
10879
|
if (ignorePatterns.some((pattern) => pattern.test(wordAndOffset.word))) continue;
|
|
10837
10880
|
const preservePhrase = preserveWordsOption.findPreservePhrase((function* () {
|
|
10838
10881
|
const firstWord = wordAndOffsets[index];
|
|
@@ -10873,7 +10916,10 @@ var table_header_casing_default = createRule("table-header-casing", {
|
|
|
10873
10916
|
actual: word,
|
|
10874
10917
|
expected: expectedWord
|
|
10875
10918
|
},
|
|
10876
|
-
loc:
|
|
10919
|
+
loc: {
|
|
10920
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
10921
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
10922
|
+
},
|
|
10877
10923
|
fix(fixer) {
|
|
10878
10924
|
return fixer.replaceTextRange(range, expectedWord);
|
|
10879
10925
|
}
|
|
@@ -10932,32 +10978,30 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
10932
10978
|
function verifyTablePipes(node) {
|
|
10933
10979
|
for (const row of node.children) verifyTableRowPipes(row);
|
|
10934
10980
|
const parsedDelimiterRow = parseTableDelimiterRow(sourceCode, node);
|
|
10935
|
-
if (parsedDelimiterRow) verifyTableLinePipes(parsedDelimiterRow.range, parsedDelimiterRow.
|
|
10981
|
+
if (parsedDelimiterRow) verifyTableLinePipes(parsedDelimiterRow.range, parsedDelimiterRow.delimiters.length);
|
|
10936
10982
|
}
|
|
10937
10983
|
/**
|
|
10938
10984
|
* Verify the table row pipes
|
|
10939
10985
|
*/
|
|
10940
10986
|
function verifyTableRowPipes(node) {
|
|
10941
|
-
|
|
10942
|
-
const range = sourceCode.getRange(node);
|
|
10943
|
-
verifyTableLinePipes(range, loc, node.children.length);
|
|
10987
|
+
verifyTableLinePipes(sourceCode.getRange(node), node.children.length);
|
|
10944
10988
|
}
|
|
10945
10989
|
/**
|
|
10946
10990
|
* Verify the table line pipes
|
|
10947
10991
|
*/
|
|
10948
|
-
function verifyTableLinePipes(lineContentRange,
|
|
10949
|
-
verifyTableLeadingPipe(lineContentRange,
|
|
10950
|
-
verifyTableTrailingPipe(lineContentRange,
|
|
10992
|
+
function verifyTableLinePipes(lineContentRange, columnCount) {
|
|
10993
|
+
verifyTableLeadingPipe(lineContentRange, columnCount);
|
|
10994
|
+
verifyTableTrailingPipe(lineContentRange, columnCount);
|
|
10951
10995
|
}
|
|
10952
10996
|
/**
|
|
10953
10997
|
* Verify the table leading pipe
|
|
10954
10998
|
*/
|
|
10955
|
-
function verifyTableLeadingPipe(lineContentRange,
|
|
10999
|
+
function verifyTableLeadingPipe(lineContentRange, columnCount) {
|
|
10956
11000
|
if (leadingOption === "always") {
|
|
10957
11001
|
if (sourceCode.text.startsWith("|", lineContentRange[0])) return;
|
|
10958
11002
|
context.report({
|
|
10959
11003
|
messageId: "missingLeadingPipe",
|
|
10960
|
-
loc:
|
|
11004
|
+
loc: sourceCode.getLocFromIndex(lineContentRange[0]),
|
|
10961
11005
|
fix(fixer) {
|
|
10962
11006
|
return fixer.insertTextBeforeRange(lineContentRange, "| ");
|
|
10963
11007
|
}
|
|
@@ -10969,13 +11013,14 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
10969
11013
|
if (!sourceCode.text.startsWith("|", lineContentRange[0])) return;
|
|
10970
11014
|
let endIndex = lineContentRange[0] + 1;
|
|
10971
11015
|
while (endIndex < lineContentRange[1] && isSpaceOrTab(sourceCode.text[endIndex])) endIndex++;
|
|
11016
|
+
const startLoc = sourceCode.getLocFromIndex(lineContentRange[0]);
|
|
10972
11017
|
context.report({
|
|
10973
11018
|
messageId: "unexpectedLeadingPipe",
|
|
10974
11019
|
loc: {
|
|
10975
|
-
start:
|
|
11020
|
+
start: startLoc,
|
|
10976
11021
|
end: {
|
|
10977
|
-
line:
|
|
10978
|
-
column:
|
|
11022
|
+
line: startLoc.line,
|
|
11023
|
+
column: startLoc.column + (endIndex - lineContentRange[0])
|
|
10979
11024
|
}
|
|
10980
11025
|
},
|
|
10981
11026
|
fix(fixer) {
|
|
@@ -10987,12 +11032,12 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
10987
11032
|
/**
|
|
10988
11033
|
* Verify the table trailing pipe
|
|
10989
11034
|
*/
|
|
10990
|
-
function verifyTableTrailingPipe(lineContentRange,
|
|
11035
|
+
function verifyTableTrailingPipe(lineContentRange, columnCount) {
|
|
10991
11036
|
if (trailingOption === "always") {
|
|
10992
11037
|
if (sourceCode.text.endsWith("|", lineContentRange[1])) return;
|
|
10993
11038
|
context.report({
|
|
10994
11039
|
messageId: "missingTrailingPipe",
|
|
10995
|
-
loc:
|
|
11040
|
+
loc: sourceCode.getLocFromIndex(lineContentRange[1]),
|
|
10996
11041
|
fix(fixer) {
|
|
10997
11042
|
return fixer.insertTextAfterRange(lineContentRange, " |");
|
|
10998
11043
|
}
|
|
@@ -11004,14 +11049,15 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
11004
11049
|
if (!sourceCode.text.endsWith("|", lineContentRange[1])) return;
|
|
11005
11050
|
let startIndex = lineContentRange[1] - 1;
|
|
11006
11051
|
while (startIndex - 1 > lineContentRange[0] && isSpaceOrTab(sourceCode.text[startIndex - 1])) startIndex--;
|
|
11052
|
+
const endLoc = sourceCode.getLocFromIndex(lineContentRange[1]);
|
|
11007
11053
|
context.report({
|
|
11008
11054
|
messageId: "unexpectedTrailingPipe",
|
|
11009
11055
|
loc: {
|
|
11010
11056
|
start: {
|
|
11011
|
-
line:
|
|
11012
|
-
column:
|
|
11057
|
+
line: endLoc.line,
|
|
11058
|
+
column: endLoc.column - (lineContentRange[1] - startIndex)
|
|
11013
11059
|
},
|
|
11014
|
-
end:
|
|
11060
|
+
end: endLoc
|
|
11015
11061
|
},
|
|
11016
11062
|
fix(fixer) {
|
|
11017
11063
|
return fixer.removeRange([startIndex, lineContentRange[1]]);
|
|
@@ -11157,7 +11203,10 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11157
11203
|
if (options.leadingSpace === "always") {
|
|
11158
11204
|
if (pipe.range[1] < nextToken.range[0]) return true;
|
|
11159
11205
|
context.report({
|
|
11160
|
-
loc:
|
|
11206
|
+
loc: {
|
|
11207
|
+
start: sourceCode.getLocFromIndex(pipe.range[0]),
|
|
11208
|
+
end: sourceCode.getLocFromIndex(pipe.range[1])
|
|
11209
|
+
},
|
|
11161
11210
|
messageId: "expectedSpaceAfter",
|
|
11162
11211
|
fix(fixer) {
|
|
11163
11212
|
return fixer.insertTextAfterRange(pipe.range, " ");
|
|
@@ -11168,8 +11217,8 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11168
11217
|
if (pipe.range[1] === nextToken.range[0]) return true;
|
|
11169
11218
|
context.report({
|
|
11170
11219
|
loc: {
|
|
11171
|
-
start: pipe.
|
|
11172
|
-
end: nextToken.
|
|
11220
|
+
start: sourceCode.getLocFromIndex(pipe.range[1]),
|
|
11221
|
+
end: sourceCode.getLocFromIndex(nextToken.range[0])
|
|
11173
11222
|
},
|
|
11174
11223
|
messageId: "expectedNoSpaceAfter",
|
|
11175
11224
|
fix(fixer) {
|
|
@@ -11187,7 +11236,10 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11187
11236
|
if (options.trailingSpace === "always") {
|
|
11188
11237
|
if (prevToken.range[1] < pipe.range[0]) return true;
|
|
11189
11238
|
context.report({
|
|
11190
|
-
loc:
|
|
11239
|
+
loc: {
|
|
11240
|
+
start: sourceCode.getLocFromIndex(pipe.range[0]),
|
|
11241
|
+
end: sourceCode.getLocFromIndex(pipe.range[1])
|
|
11242
|
+
},
|
|
11191
11243
|
messageId: "expectedSpaceBefore",
|
|
11192
11244
|
fix(fixer) {
|
|
11193
11245
|
return fixer.insertTextBeforeRange(pipe.range, " ");
|
|
@@ -11198,8 +11250,8 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11198
11250
|
if (prevToken.range[1] === pipe.range[0]) return true;
|
|
11199
11251
|
context.report({
|
|
11200
11252
|
loc: {
|
|
11201
|
-
start: prevToken.
|
|
11202
|
-
end: pipe.
|
|
11253
|
+
start: sourceCode.getLocFromIndex(prevToken.range[1]),
|
|
11254
|
+
end: sourceCode.getLocFromIndex(pipe.range[0])
|
|
11203
11255
|
},
|
|
11204
11256
|
messageId: "expectedNoSpaceBefore",
|
|
11205
11257
|
fix(fixer) {
|
|
@@ -11216,15 +11268,18 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11216
11268
|
*/
|
|
11217
11269
|
function verifyAlignPipe({ leadingPipe, content, trailingPipe }, cellAlign) {
|
|
11218
11270
|
if (!leadingPipe || !trailingPipe || !content) return null;
|
|
11219
|
-
const lineText = sourceCode.lines[leadingPipe.
|
|
11271
|
+
const lineText = sourceCode.lines[sourceCode.getLocFromIndex(leadingPipe.range[0]).line - 1];
|
|
11220
11272
|
if (cellAlign === "left") {
|
|
11221
11273
|
const expectedWidth = options.leadingSpace === "always" ? 1 : 0;
|
|
11222
11274
|
if (getLeadingSpacesWidth() === expectedWidth) return null;
|
|
11223
11275
|
context.report({
|
|
11224
11276
|
loc: leadingPipe.range[1] < content.range[0] ? {
|
|
11225
|
-
start: leadingPipe.
|
|
11226
|
-
end: content.
|
|
11227
|
-
} :
|
|
11277
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[1]),
|
|
11278
|
+
end: sourceCode.getLocFromIndex(content.range[0])
|
|
11279
|
+
} : {
|
|
11280
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[0]),
|
|
11281
|
+
end: sourceCode.getLocFromIndex(leadingPipe.range[1])
|
|
11282
|
+
},
|
|
11228
11283
|
messageId: expectedWidth >= 1 ? "expectedAlignLeft" : "expectedNoSpaceAlignLeft",
|
|
11229
11284
|
*fix(fixer) {
|
|
11230
11285
|
const cellWidth = getCellWidth();
|
|
@@ -11241,9 +11296,12 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11241
11296
|
if (getTrailingSpacesWidth() === expectedWidth) return null;
|
|
11242
11297
|
context.report({
|
|
11243
11298
|
loc: content.range[1] < trailingPipe.range[0] ? {
|
|
11244
|
-
start: content.
|
|
11245
|
-
end: trailingPipe.
|
|
11246
|
-
} :
|
|
11299
|
+
start: sourceCode.getLocFromIndex(content.range[1]),
|
|
11300
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[0])
|
|
11301
|
+
} : {
|
|
11302
|
+
start: sourceCode.getLocFromIndex(trailingPipe.range[0]),
|
|
11303
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[1])
|
|
11304
|
+
},
|
|
11247
11305
|
messageId: expectedWidth >= 1 ? "expectedAlignRight" : "expectedNoSpaceAlignRight",
|
|
11248
11306
|
*fix(fixer) {
|
|
11249
11307
|
const cellWidth = getCellWidth();
|
|
@@ -11260,20 +11318,24 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11260
11318
|
const trailingSpacesWidth = getTrailingSpacesWidth();
|
|
11261
11319
|
if (leadingSpacesWidth === trailingSpacesWidth || leadingSpacesWidth + 1 === trailingSpacesWidth) return null;
|
|
11262
11320
|
const leadingReportLoc = leadingPipe.range[1] < content.range[0] ? {
|
|
11263
|
-
start: leadingPipe.
|
|
11264
|
-
end: content.
|
|
11265
|
-
} :
|
|
11321
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[1]),
|
|
11322
|
+
end: sourceCode.getLocFromIndex(content.range[0])
|
|
11323
|
+
} : {
|
|
11324
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[0]),
|
|
11325
|
+
end: sourceCode.getLocFromIndex(leadingPipe.range[1])
|
|
11326
|
+
};
|
|
11266
11327
|
const trailingReportLoc = content.range[1] < trailingPipe.range[0] ? {
|
|
11267
|
-
start: content.
|
|
11268
|
-
end: trailingPipe.
|
|
11269
|
-
} :
|
|
11328
|
+
start: sourceCode.getLocFromIndex(content.range[1]),
|
|
11329
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[0])
|
|
11330
|
+
} : {
|
|
11331
|
+
start: sourceCode.getLocFromIndex(trailingPipe.range[0]),
|
|
11332
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[1])
|
|
11333
|
+
};
|
|
11270
11334
|
for (const reportLoc of [leadingReportLoc, trailingReportLoc]) context.report({
|
|
11271
11335
|
loc: reportLoc,
|
|
11272
11336
|
messageId: "expectedAlignCenter",
|
|
11273
11337
|
*fix(fixer) {
|
|
11274
|
-
const
|
|
11275
|
-
const contentTextWidth = getContentTextWidth();
|
|
11276
|
-
const spacesLength = cellWidth - contentTextWidth;
|
|
11338
|
+
const spacesLength = getCellWidth() - getContentTextWidth();
|
|
11277
11339
|
const leadingSpacesLength = Math.floor(spacesLength / 2);
|
|
11278
11340
|
const trailingSpacesLength = spacesLength - leadingSpacesLength;
|
|
11279
11341
|
const newLeadingSpaces = " ".repeat(leadingSpacesLength);
|
|
@@ -11289,33 +11351,34 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11289
11351
|
* Get the width of the leading spaces in the cell.
|
|
11290
11352
|
*/
|
|
11291
11353
|
function getLeadingSpacesWidth() {
|
|
11292
|
-
return getTextWidth(lineText, leadingPipe.
|
|
11354
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(leadingPipe.range[1]).column - 1, sourceCode.getLocFromIndex(content.range[0]).column - 1);
|
|
11293
11355
|
}
|
|
11294
11356
|
/**
|
|
11295
11357
|
* Get the width of the trailing spaces in the cell.
|
|
11296
11358
|
*/
|
|
11297
11359
|
function getTrailingSpacesWidth() {
|
|
11298
|
-
return getTextWidth(lineText, content.
|
|
11360
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(content.range[1]).column - 1, sourceCode.getLocFromIndex(trailingPipe.range[0]).column - 1);
|
|
11299
11361
|
}
|
|
11300
11362
|
/**
|
|
11301
11363
|
* Get the width of the whole cell (including leading and trailing spaces)
|
|
11302
11364
|
*/
|
|
11303
11365
|
function getCellWidth() {
|
|
11304
|
-
return getTextWidth(lineText, leadingPipe.
|
|
11366
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(leadingPipe.range[1]).column - 1, sourceCode.getLocFromIndex(trailingPipe.range[0]).column - 1);
|
|
11305
11367
|
}
|
|
11306
11368
|
/**
|
|
11307
11369
|
* Get the width of the content text (excluding leading and trailing spaces)
|
|
11308
11370
|
*/
|
|
11309
11371
|
function getContentTextWidth() {
|
|
11310
|
-
return getTextWidth(lineText, content.
|
|
11372
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(content.range[0]).column - 1, sourceCode.getLocFromIndex(content.range[1]).column - 1);
|
|
11311
11373
|
}
|
|
11312
11374
|
/**
|
|
11313
11375
|
* Get the normalized content text (with normalized spaces)
|
|
11314
11376
|
*/
|
|
11315
11377
|
function getNormalizedContentText() {
|
|
11316
|
-
const
|
|
11378
|
+
const contentStartLoc = sourceCode.getLocFromIndex(content.range[0]);
|
|
11379
|
+
const prefixWidth = getWidth(lineText.slice(0, contentStartLoc.column - 1));
|
|
11317
11380
|
let result = "";
|
|
11318
|
-
for (const c of lineText.slice(
|
|
11381
|
+
for (const c of lineText.slice(contentStartLoc.column - 1, sourceCode.getLocFromIndex(content.range[1]).column - 1)) if (c === " ") result += " ".repeat(4 - (prefixWidth + result.length) % 4);
|
|
11319
11382
|
else result += c;
|
|
11320
11383
|
return result;
|
|
11321
11384
|
}
|
|
@@ -11555,7 +11618,7 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11555
11618
|
const firstCell = this.rows[0].cells[0];
|
|
11556
11619
|
const firstToken = firstCell.leadingPipe ?? firstCell.content;
|
|
11557
11620
|
if (!firstToken) return null;
|
|
11558
|
-
return getTextWidth(sourceCode.lines[firstToken.
|
|
11621
|
+
return getTextWidth(sourceCode.lines[sourceCode.getLocFromIndex(firstToken.range[0]).line - 1], 0, sourceCode.getLocFromIndex(firstToken.range[0]).column - 1);
|
|
11559
11622
|
}
|
|
11560
11623
|
if (options.columnOption === "minimum") return this.getMinimumPipePosition(pipeIndex);
|
|
11561
11624
|
else if (options.columnOption === "consistent") {
|
|
@@ -11564,7 +11627,8 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11564
11627
|
if (row.cells.length <= columnIndex) continue;
|
|
11565
11628
|
const cell = row.cells[columnIndex];
|
|
11566
11629
|
if (cell.type === "delimiter" || !cell.trailingPipe) continue;
|
|
11567
|
-
const
|
|
11630
|
+
const trailingPipeStartLoc = sourceCode.getLocFromIndex(cell.trailingPipe.range[0]);
|
|
11631
|
+
const width = getTextWidth(sourceCode.lines[trailingPipeStartLoc.line - 1], 0, trailingPipeStartLoc.column - 1);
|
|
11568
11632
|
return Math.max(width, this.getMinimumPipePosition(pipeIndex) || 0);
|
|
11569
11633
|
}
|
|
11570
11634
|
}
|
|
@@ -11583,20 +11647,24 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11583
11647
|
const cell = row.cells[columnIndex];
|
|
11584
11648
|
let width;
|
|
11585
11649
|
if (cell.leadingPipe) {
|
|
11586
|
-
const
|
|
11650
|
+
const leadingPipeEndLoc = sourceCode.getLocFromIndex(cell.leadingPipe.range[1]);
|
|
11651
|
+
const leadingPipeEndOffset = getTextWidth(sourceCode.lines[leadingPipeEndLoc.line - 1], 0, leadingPipeEndLoc.column - 1);
|
|
11587
11652
|
let contentLength;
|
|
11588
11653
|
if (cell.type === "delimiter") contentLength = getMinimumDelimiterLength(cell.align);
|
|
11589
11654
|
else {
|
|
11590
11655
|
if (!cell.content) continue;
|
|
11591
|
-
|
|
11656
|
+
const contentStartLoc = sourceCode.getLocFromIndex(cell.content.range[0]);
|
|
11657
|
+
contentLength = getTextWidth(sourceCode.lines[contentStartLoc.line - 1], contentStartLoc.column - 1, sourceCode.getLocFromIndex(cell.content.range[1]).column - 1);
|
|
11592
11658
|
}
|
|
11593
11659
|
width = leadingPipeEndOffset + (needSpaceAfterPipe ? 1 : 0) + contentLength;
|
|
11594
11660
|
} else if (cell.type === "delimiter") {
|
|
11595
11661
|
const minimumDelimiterLength = getMinimumDelimiterLength(cell.align);
|
|
11596
|
-
|
|
11662
|
+
const delimiterStartLoc = sourceCode.getLocFromIndex(cell.delimiter.range[0]);
|
|
11663
|
+
width = getTextWidth(sourceCode.lines[delimiterStartLoc.line - 1], 0, delimiterStartLoc.column - 1) + minimumDelimiterLength;
|
|
11597
11664
|
} else {
|
|
11598
11665
|
if (!cell.content) continue;
|
|
11599
|
-
|
|
11666
|
+
const contentEndLoc = sourceCode.getLocFromIndex(cell.content.range[1]);
|
|
11667
|
+
width = getTextWidth(sourceCode.lines[contentEndLoc.line - 1], 0, contentEndLoc.column - 1);
|
|
11600
11668
|
}
|
|
11601
11669
|
if (needSpaceBeforePipe) width += 1;
|
|
11602
11670
|
maxWidth = Math.max(maxWidth, width);
|
|
@@ -11676,11 +11744,14 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11676
11744
|
function verifyPipe(pipe, pipeIndex, table, cell) {
|
|
11677
11745
|
const expected = table.getExpectedPipePosition(pipeIndex);
|
|
11678
11746
|
if (expected == null) return true;
|
|
11679
|
-
const
|
|
11680
|
-
const diff = expected -
|
|
11747
|
+
const pipeStartLoc = sourceCode.getLocFromIndex(pipe.range[0]);
|
|
11748
|
+
const diff = expected - getTextWidth(sourceCode.lines[pipeStartLoc.line - 1], 0, pipeStartLoc.column - 1);
|
|
11681
11749
|
if (diff === 0) return true;
|
|
11682
11750
|
context.report({
|
|
11683
|
-
loc:
|
|
11751
|
+
loc: {
|
|
11752
|
+
start: sourceCode.getLocFromIndex(pipe.range[0]),
|
|
11753
|
+
end: sourceCode.getLocFromIndex(pipe.range[1])
|
|
11754
|
+
},
|
|
11684
11755
|
messageId: diff > 0 ? "addSpaces" : "removeSpaces",
|
|
11685
11756
|
data: {
|
|
11686
11757
|
expected: String(expected),
|
|
@@ -11695,9 +11766,8 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11695
11766
|
const baseEdit = fixRemoveSpaces();
|
|
11696
11767
|
if (baseEdit) return baseEdit;
|
|
11697
11768
|
if (pipeIndex === 0 || cell.type === "cell") return null;
|
|
11698
|
-
const
|
|
11699
|
-
const
|
|
11700
|
-
const newLength = expected - widthBeforeDelimiter;
|
|
11769
|
+
const delimiterStartLoc = sourceCode.getLocFromIndex(cell.delimiter.range[0]);
|
|
11770
|
+
const newLength = expected - getTextWidth(sourceCode.lines[delimiterStartLoc.line - 1].slice(0, delimiterStartLoc.column - 1));
|
|
11701
11771
|
const minimumDelimiterLength = getMinimumDelimiterLength(cell.align);
|
|
11702
11772
|
const spaceAfter = table.isNeedSpaceBetweenContentAndTrailingPipe(pipeIndex) ? " " : "";
|
|
11703
11773
|
if (newLength < minimumDelimiterLength + spaceAfter.length) {
|
|
@@ -11716,11 +11786,10 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11716
11786
|
* Fixer to remove spaces before the pipe
|
|
11717
11787
|
*/
|
|
11718
11788
|
function fixRemoveSpaces() {
|
|
11719
|
-
const beforePipe = sourceCode.lines[
|
|
11789
|
+
const beforePipe = sourceCode.lines[pipeStartLoc.line - 1].slice(0, pipeStartLoc.column - 1);
|
|
11720
11790
|
const trimmedBeforePipe = beforePipe.trimEnd();
|
|
11721
11791
|
const spacesBeforePipeLength = beforePipe.length - trimmedBeforePipe.length;
|
|
11722
|
-
const
|
|
11723
|
-
const newSpacesLength = expected - widthBeforePipe;
|
|
11792
|
+
const newSpacesLength = expected - getTextWidth(trimmedBeforePipe);
|
|
11724
11793
|
const minTrailingSpaceWidth = table.isNeedSpaceBetweenContentAndTrailingPipe(pipeIndex) ? 1 : 0;
|
|
11725
11794
|
if (newSpacesLength < minTrailingSpaceWidth) {
|
|
11726
11795
|
const edit = fixRemoveSpacesFromLeadingSpaces(Math.abs(newSpacesLength) + minTrailingSpaceWidth);
|
|
@@ -11736,7 +11805,8 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11736
11805
|
if (!cell.leadingPipe || pipeIndex === 0) return null;
|
|
11737
11806
|
const content = cell.type === "delimiter" ? cell.delimiter : cell.content;
|
|
11738
11807
|
if (!content) return null;
|
|
11739
|
-
const
|
|
11808
|
+
const leadingPipeEndLoc = sourceCode.getLocFromIndex(cell.leadingPipe.range[1]);
|
|
11809
|
+
const newSpacesLength = getTextWidth(sourceCode.lines[leadingPipeEndLoc.line - 1], leadingPipeEndLoc.column - 1, sourceCode.getLocFromIndex(content.range[0]).column - 1) - removeSpaceLength;
|
|
11740
11810
|
if (newSpacesLength < (table.isNeedSpaceBetweenLeadingPipeAndContent(pipeIndex - 1) ? 1 : 0)) return null;
|
|
11741
11811
|
return fixer.replaceTextRange([cell.leadingPipe.range[1], content.range[0]], " ".repeat(newSpacesLength));
|
|
11742
11812
|
}
|
|
@@ -12156,7 +12226,7 @@ var meta_exports = /* @__PURE__ */ __export({
|
|
|
12156
12226
|
version: () => version
|
|
12157
12227
|
});
|
|
12158
12228
|
const name = "eslint-plugin-markdown-preferences";
|
|
12159
|
-
const version = "0.
|
|
12229
|
+
const version = "0.36.1";
|
|
12160
12230
|
|
|
12161
12231
|
//#endregion
|
|
12162
12232
|
//#region src/language/extensions/micromark-custom-container.ts
|
|
@@ -12504,7 +12574,7 @@ function importCodeSnippetFromMarkdown() {
|
|
|
12504
12574
|
* Parse Extended Markdown to MDAST.
|
|
12505
12575
|
*/
|
|
12506
12576
|
function parseExtendedMarkdown(code) {
|
|
12507
|
-
|
|
12577
|
+
return fromMarkdown(code, {
|
|
12508
12578
|
extensions: [
|
|
12509
12579
|
gfm(),
|
|
12510
12580
|
frontmatter(["yaml", "toml"]),
|
|
@@ -12519,8 +12589,7 @@ function parseExtendedMarkdown(code) {
|
|
|
12519
12589
|
customContainerFromMarkdown(),
|
|
12520
12590
|
importCodeSnippetFromMarkdown()
|
|
12521
12591
|
]
|
|
12522
|
-
};
|
|
12523
|
-
return fromMarkdown(code, options);
|
|
12592
|
+
});
|
|
12524
12593
|
}
|
|
12525
12594
|
|
|
12526
12595
|
//#endregion
|