eslint-plugin-markdown-preferences 0.35.0 → 0.36.0
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 +730 -674
- 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 = /<!--(.*?)-->/u;
|
|
43
44
|
/**
|
|
44
45
|
* Get the parent of a node.
|
|
45
46
|
*/
|
|
@@ -137,41 +138,17 @@ function getThematicBreakMarker(sourceCode, node) {
|
|
|
137
138
|
};
|
|
138
139
|
}
|
|
139
140
|
/**
|
|
140
|
-
*
|
|
141
|
+
* Check whether a node is an HTML comment.
|
|
141
142
|
*/
|
|
142
|
-
function
|
|
143
|
-
|
|
144
|
-
const loc = sourceCode.getLoc(node);
|
|
145
|
-
if (nodeRange[1] <= range[0]) return getSourceLocationFromRangeAndSourcePosition(sourceCode, nodeRange[1], loc.end, range);
|
|
146
|
-
return getSourceLocationFromRangeAndSourcePosition(sourceCode, nodeRange[0], loc.start, range);
|
|
143
|
+
function isHTMLComment(node) {
|
|
144
|
+
return node.type === "html" && RE_HTML_COMMENT.test(node.value);
|
|
147
145
|
}
|
|
148
146
|
/**
|
|
149
|
-
* Get the
|
|
147
|
+
* Get the value of an HTML comment.
|
|
150
148
|
*/
|
|
151
|
-
function
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const beforeLines = sourceCode.text.slice(startIndex, range[0]).split(/\n/u);
|
|
155
|
-
startLine = startLoc.line + beforeLines.length - 1;
|
|
156
|
-
startColumn = (beforeLines.length === 1 ? startLoc.column : 1) + (beforeLines.at(-1) || "").length;
|
|
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
|
|
173
|
-
}
|
|
174
|
-
};
|
|
149
|
+
function getHTMLCommentValue(node) {
|
|
150
|
+
if (!isHTMLComment(node)) return null;
|
|
151
|
+
return RE_HTML_COMMENT.exec(node.value)?.[1] ?? null;
|
|
175
152
|
}
|
|
176
153
|
|
|
177
154
|
//#endregion
|
|
@@ -208,52 +185,28 @@ function isAsciiControlCharacter(char) {
|
|
|
208
185
|
*/
|
|
209
186
|
function parseATXHeading(sourceCode, node) {
|
|
210
187
|
if (getHeadingKind(sourceCode, node) !== "atx") return null;
|
|
211
|
-
const loc = sourceCode.getLoc(node);
|
|
212
188
|
const range = sourceCode.getRange(node);
|
|
213
189
|
const text = sourceCode.text.slice(...range);
|
|
214
190
|
const parsedOpening = parseATXHeadingOpeningSequenceFromText(text);
|
|
215
191
|
if (parsedOpening === null) return null;
|
|
216
192
|
const openingSequence = {
|
|
217
193
|
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
|
|
194
|
+
range: [range[0], range[0] + parsedOpening.openingSequence.length]
|
|
230
195
|
};
|
|
231
196
|
const parsedClosing = parseATXHeadingClosingSequenceFromText(text);
|
|
232
197
|
if (parsedClosing == null) {
|
|
233
198
|
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
|
-
}
|
|
199
|
+
const contentText = textAfterOpening.trimEnd();
|
|
200
|
+
const contentRange$1 = [openingSequence.range[1] + parsedOpening.after.length, openingSequence.range[1] + parsedOpening.after.length + contentText.length];
|
|
201
|
+
const after = contentText === textAfterOpening ? null : {
|
|
202
|
+
text: textAfterOpening.slice(contentText.length),
|
|
203
|
+
range: [contentRange$1[1], range[1]]
|
|
247
204
|
};
|
|
248
205
|
return {
|
|
249
206
|
openingSequence,
|
|
250
207
|
content: {
|
|
251
|
-
text: contentText
|
|
252
|
-
range: contentRange$1
|
|
253
|
-
loc: {
|
|
254
|
-
start: contentLocStart,
|
|
255
|
-
end: contentLocEnd
|
|
256
|
-
}
|
|
208
|
+
text: contentText,
|
|
209
|
+
range: contentRange$1
|
|
257
210
|
},
|
|
258
211
|
closingSequence: null,
|
|
259
212
|
after
|
|
@@ -261,40 +214,18 @@ function parseATXHeading(sourceCode, node) {
|
|
|
261
214
|
}
|
|
262
215
|
const spaceAfterClosing = {
|
|
263
216
|
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
|
-
}
|
|
217
|
+
range: [range[1] - parsedClosing.after.length, range[1]]
|
|
272
218
|
};
|
|
273
219
|
const closingSequence = {
|
|
274
220
|
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
|
-
}
|
|
221
|
+
range: [spaceAfterClosing.range[0] - parsedClosing.closingSequence.length, spaceAfterClosing.range[0]]
|
|
283
222
|
};
|
|
284
223
|
const contentRange = [openingSequence.range[1] + parsedOpening.after.length, closingSequence.range[0] - parsedClosing.before.length];
|
|
285
|
-
const contentText = sourceCode.text.slice(...contentRange);
|
|
286
224
|
return {
|
|
287
225
|
openingSequence,
|
|
288
226
|
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
|
-
}
|
|
227
|
+
text: sourceCode.text.slice(...contentRange),
|
|
228
|
+
range: contentRange
|
|
298
229
|
},
|
|
299
230
|
closingSequence,
|
|
300
231
|
after: spaceAfterClosing.range[0] < spaceAfterClosing.range[1] ? spaceAfterClosing : null
|
|
@@ -349,58 +280,6 @@ function parseATXHeadingClosingSequenceFromText(text) {
|
|
|
349
280
|
}
|
|
350
281
|
}
|
|
351
282
|
|
|
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
283
|
//#endregion
|
|
405
284
|
//#region src/utils/text-width.ts
|
|
406
285
|
let segmenter;
|
|
@@ -466,7 +345,10 @@ var atx_heading_closing_sequence_length_default = createRule("atx-heading-closin
|
|
|
466
345
|
if (expectedLength === actualLength) return;
|
|
467
346
|
context.report({
|
|
468
347
|
node: reportNode,
|
|
469
|
-
loc:
|
|
348
|
+
loc: {
|
|
349
|
+
start: sourceCode.getLocFromIndex(parsed.closingSequence.range[0]),
|
|
350
|
+
end: sourceCode.getLocFromIndex(parsed.closingSequence.range[1])
|
|
351
|
+
},
|
|
470
352
|
messageId: "wrongClosingLength",
|
|
471
353
|
data: {
|
|
472
354
|
expected: String(expectedLength),
|
|
@@ -546,17 +428,23 @@ var atx_heading_closing_sequence_length_default = createRule("atx-heading-closin
|
|
|
546
428
|
* Get the content length of the heading.
|
|
547
429
|
*/
|
|
548
430
|
function getContentLength(parsed) {
|
|
549
|
-
const
|
|
550
|
-
const
|
|
551
|
-
|
|
431
|
+
const closingSequenceStartLine = sourceCode.getLocFromIndex(parsed.closingSequence.range[0]).line;
|
|
432
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
433
|
+
line: closingSequenceStartLine,
|
|
434
|
+
column: 1
|
|
435
|
+
});
|
|
436
|
+
return getTextWidth(sourceCode.text.slice(lineStartIndex, parsed.closingSequence.range[0]));
|
|
552
437
|
}
|
|
553
438
|
/**
|
|
554
439
|
* Get the line length of the heading.
|
|
555
440
|
*/
|
|
556
441
|
function getLineLength(parsed) {
|
|
557
|
-
const
|
|
558
|
-
const
|
|
559
|
-
|
|
442
|
+
const closingSequenceStartLine = sourceCode.getLocFromIndex(parsed.closingSequence.range[0]).line;
|
|
443
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
444
|
+
line: closingSequenceStartLine,
|
|
445
|
+
column: 1
|
|
446
|
+
});
|
|
447
|
+
return getTextWidth(sourceCode.text.slice(lineStartIndex, parsed.closingSequence.range[1]));
|
|
560
448
|
}
|
|
561
449
|
}
|
|
562
450
|
});
|
|
@@ -608,14 +496,13 @@ var atx_heading_closing_sequence_default = createRule("atx-heading-closing-seque
|
|
|
608
496
|
context.report({
|
|
609
497
|
node,
|
|
610
498
|
loc: {
|
|
611
|
-
start: parsed.content.
|
|
612
|
-
end: parsed.closingSequence.
|
|
499
|
+
start: sourceCode.getLocFromIndex(parsed.content.range[1]),
|
|
500
|
+
end: sourceCode.getLocFromIndex(parsed.closingSequence.range[1])
|
|
613
501
|
},
|
|
614
502
|
messageId: "forbidClosing",
|
|
615
503
|
*fix(fixer) {
|
|
616
504
|
const removeRange = [parsed.content.range[1], parsed.closingSequence.range[1]];
|
|
617
|
-
const
|
|
618
|
-
const newHeadingParsed = parseATXHeadingClosingSequenceFromText(newHeadingText);
|
|
505
|
+
const newHeadingParsed = parseATXHeadingClosingSequenceFromText(sourceCode.text.slice(sourceCode.getRange(node)[0], removeRange[0]));
|
|
619
506
|
if (newHeadingParsed) {
|
|
620
507
|
const escapeIndex = removeRange[0] - newHeadingParsed.after.length - 1;
|
|
621
508
|
yield fixer.insertTextBeforeRange([escapeIndex, escapeIndex], "\\");
|
|
@@ -787,19 +674,28 @@ var blockquote_marker_alignment_default = createRule("blockquote-marker-alignmen
|
|
|
787
674
|
loc: marker.loc,
|
|
788
675
|
messageId: "inconsistentAlignment",
|
|
789
676
|
fix(fixer) {
|
|
790
|
-
const line = getParsedLines(sourceCode).get(lineNumber);
|
|
791
677
|
if (indentWidth < baseIndentWidth) {
|
|
792
678
|
const addSpaces = " ".repeat(baseIndentWidth - indentWidth);
|
|
793
|
-
|
|
679
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
680
|
+
line: lineNumber,
|
|
681
|
+
column: 1
|
|
682
|
+
});
|
|
683
|
+
return fixer.insertTextBeforeRange([lineStartIndex + marker.loc.start.column - 1, lineStartIndex + marker.loc.start.column - 1], addSpaces);
|
|
794
684
|
}
|
|
795
|
-
let newBeforeMarker =
|
|
685
|
+
let newBeforeMarker = sourceCode.lines[lineNumber - 1].slice(0, marker.loc.start.column - 1);
|
|
796
686
|
while (getWidth(newBeforeMarker) > baseIndentWidth) {
|
|
797
687
|
const last = newBeforeMarker.at(-1);
|
|
798
688
|
if (last && isWhitespace(last)) newBeforeMarker = newBeforeMarker.slice(0, -1);
|
|
799
689
|
else return null;
|
|
800
690
|
}
|
|
801
691
|
if (getWidth(newBeforeMarker) < baseIndentWidth) newBeforeMarker += " ".repeat(baseIndentWidth - getWidth(newBeforeMarker));
|
|
802
|
-
if (!baseBeforeMarker.includes(">") || baseBeforeMarker === newBeforeMarker)
|
|
692
|
+
if (!baseBeforeMarker.includes(">") || baseBeforeMarker === newBeforeMarker) {
|
|
693
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
694
|
+
line: lineNumber,
|
|
695
|
+
column: 1
|
|
696
|
+
});
|
|
697
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + marker.loc.start.column - 1], newBeforeMarker);
|
|
698
|
+
}
|
|
803
699
|
return null;
|
|
804
700
|
}
|
|
805
701
|
});
|
|
@@ -1005,23 +901,19 @@ function parseFencedCodeBlock(sourceCode, node) {
|
|
|
1005
901
|
const trimmedAfterLanguage = afterLanguage.trimStart();
|
|
1006
902
|
const spaceAfterLanguageLength = afterLanguage.length - trimmedAfterLanguage.length;
|
|
1007
903
|
const metaText = trimmedAfterLanguage.trimEnd();
|
|
1008
|
-
const openingFenceRange = [range[0], range[0] + fenceText.length];
|
|
1009
904
|
const openingFence = {
|
|
1010
905
|
text: fenceText,
|
|
1011
|
-
range:
|
|
1012
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingFenceRange)
|
|
906
|
+
range: [range[0], range[0] + fenceText.length]
|
|
1013
907
|
};
|
|
1014
908
|
const languageRange = languageText ? [openingFence.range[1] + spaceAfterOpeningFenceLength, openingFence.range[1] + spaceAfterOpeningFenceLength + languageText.length] : null;
|
|
1015
909
|
const language$2 = languageText && languageRange ? {
|
|
1016
910
|
text: languageText,
|
|
1017
|
-
range: languageRange
|
|
1018
|
-
loc: getSourceLocationFromRange(sourceCode, node, languageRange)
|
|
911
|
+
range: languageRange
|
|
1019
912
|
} : null;
|
|
1020
913
|
const metaRange = language$2 && metaText ? [language$2.range[1] + spaceAfterLanguageLength, language$2.range[1] + spaceAfterLanguageLength + metaText.length] : null;
|
|
1021
914
|
const meta = language$2 && metaText && metaRange ? {
|
|
1022
915
|
text: metaText,
|
|
1023
|
-
range: metaRange
|
|
1024
|
-
loc: getSourceLocationFromRange(sourceCode, node, metaRange)
|
|
916
|
+
range: metaRange
|
|
1025
917
|
} : null;
|
|
1026
918
|
const fenceChar = fenceText[0];
|
|
1027
919
|
let closingFenceText = "";
|
|
@@ -1054,17 +946,7 @@ function parseFencedCodeBlock(sourceCode, node) {
|
|
|
1054
946
|
meta,
|
|
1055
947
|
closingFence: {
|
|
1056
948
|
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
|
-
}
|
|
949
|
+
range: [range[1] - trailingSpacesLength - closingFenceText.length, range[1] - trailingSpacesLength]
|
|
1068
950
|
}
|
|
1069
951
|
};
|
|
1070
952
|
}
|
|
@@ -1127,7 +1009,10 @@ var canonical_code_block_language_default = createRule("canonical-code-block-lan
|
|
|
1127
1009
|
if (!parsed || !parsed.language) return;
|
|
1128
1010
|
context.report({
|
|
1129
1011
|
node,
|
|
1130
|
-
loc:
|
|
1012
|
+
loc: {
|
|
1013
|
+
start: sourceCode.getLocFromIndex(parsed.language.range[0]),
|
|
1014
|
+
end: sourceCode.getLocFromIndex(parsed.language.range[1])
|
|
1015
|
+
},
|
|
1131
1016
|
messageId: "useCanonical",
|
|
1132
1017
|
data: {
|
|
1133
1018
|
canonical,
|
|
@@ -1211,7 +1096,10 @@ var code_fence_length_default = createRule("code-fence-length", {
|
|
|
1211
1096
|
const expectedFence = getExpectedFence(parsed, length);
|
|
1212
1097
|
context.report({
|
|
1213
1098
|
node,
|
|
1214
|
-
loc:
|
|
1099
|
+
loc: {
|
|
1100
|
+
start: sourceCode.getLocFromIndex(parsed.openingFence.range[0]),
|
|
1101
|
+
end: sourceCode.getLocFromIndex(parsed.openingFence.range[1])
|
|
1102
|
+
},
|
|
1215
1103
|
data: {
|
|
1216
1104
|
expected: expectedFence,
|
|
1217
1105
|
actual: parsed.openingFence.text
|
|
@@ -1262,7 +1150,10 @@ var code_fence_length_default = createRule("code-fence-length", {
|
|
|
1262
1150
|
if (!closingFence || openingFence.text.length === closingFence.text.length) return true;
|
|
1263
1151
|
context.report({
|
|
1264
1152
|
node,
|
|
1265
|
-
loc:
|
|
1153
|
+
loc: {
|
|
1154
|
+
start: sourceCode.getLocFromIndex(closingFence.range[0]),
|
|
1155
|
+
end: sourceCode.getLocFromIndex(closingFence.range[1])
|
|
1156
|
+
},
|
|
1266
1157
|
messageId: "notMatch",
|
|
1267
1158
|
fix(fixer) {
|
|
1268
1159
|
return [fixer.replaceTextRange(closingFence.range, openingFence.text)];
|
|
@@ -1314,7 +1205,10 @@ var code_fence_spacing_default = createRule("code-fence-spacing", {
|
|
|
1314
1205
|
if (hasSpace) return;
|
|
1315
1206
|
context.report({
|
|
1316
1207
|
node,
|
|
1317
|
-
loc:
|
|
1208
|
+
loc: {
|
|
1209
|
+
start: sourceCode.getLocFromIndex(language$2.range[0]),
|
|
1210
|
+
end: sourceCode.getLocFromIndex(language$2.range[1])
|
|
1211
|
+
},
|
|
1318
1212
|
messageId: "expectedSpace",
|
|
1319
1213
|
fix(fixer) {
|
|
1320
1214
|
return fixer.insertTextAfterRange(openingFence.range, " ");
|
|
@@ -1324,7 +1218,10 @@ var code_fence_spacing_default = createRule("code-fence-spacing", {
|
|
|
1324
1218
|
if (!hasSpace) return;
|
|
1325
1219
|
context.report({
|
|
1326
1220
|
node,
|
|
1327
|
-
loc:
|
|
1221
|
+
loc: {
|
|
1222
|
+
start: sourceCode.getLocFromIndex(openingFence.range[1]),
|
|
1223
|
+
end: sourceCode.getLocFromIndex(language$2.range[0])
|
|
1224
|
+
},
|
|
1328
1225
|
messageId: "unexpectedSpace",
|
|
1329
1226
|
fix(fixer) {
|
|
1330
1227
|
return fixer.removeRange([openingFence.range[1], language$2.range[0]]);
|
|
@@ -1368,7 +1265,10 @@ var code_fence_style_default = createRule("code-fence-style", {
|
|
|
1368
1265
|
if (node.value.includes(expectedOpeningFence)) return;
|
|
1369
1266
|
context.report({
|
|
1370
1267
|
node,
|
|
1371
|
-
loc:
|
|
1268
|
+
loc: {
|
|
1269
|
+
start: sourceCode.getLocFromIndex(parsed.openingFence.range[0]),
|
|
1270
|
+
end: sourceCode.getLocFromIndex(parsed.openingFence.range[1])
|
|
1271
|
+
},
|
|
1372
1272
|
data: {
|
|
1373
1273
|
expected: expectedOpeningFence,
|
|
1374
1274
|
actual: parsed.openingFence.text
|
|
@@ -1401,17 +1301,13 @@ function parseCustomContainer(sourceCode, node) {
|
|
|
1401
1301
|
const spaceAfterOpeningSequenceLength = afterOpeningSequence.length - trimmedAfterOpeningSequence.length;
|
|
1402
1302
|
const infoText = trimmedAfterOpeningSequence.trimEnd();
|
|
1403
1303
|
if (!infoText) return null;
|
|
1404
|
-
const openingSequenceRange = [range[0], range[0] + sequenceText.length];
|
|
1405
1304
|
const openingSequence = {
|
|
1406
1305
|
text: sequenceText,
|
|
1407
|
-
range:
|
|
1408
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingSequenceRange)
|
|
1306
|
+
range: [range[0], range[0] + sequenceText.length]
|
|
1409
1307
|
};
|
|
1410
|
-
const infoRange = [openingSequence.range[1] + spaceAfterOpeningSequenceLength, openingSequence.range[1] + spaceAfterOpeningSequenceLength + infoText.length];
|
|
1411
1308
|
const info = {
|
|
1412
1309
|
text: infoText,
|
|
1413
|
-
range:
|
|
1414
|
-
loc: getSourceLocationFromRange(sourceCode, node, infoRange)
|
|
1310
|
+
range: [openingSequence.range[1] + spaceAfterOpeningSequenceLength, openingSequence.range[1] + spaceAfterOpeningSequenceLength + infoText.length]
|
|
1415
1311
|
};
|
|
1416
1312
|
const sequenceChar = sequenceText[0];
|
|
1417
1313
|
let closingSequenceText = "";
|
|
@@ -1443,8 +1339,7 @@ function parseCustomContainer(sourceCode, node) {
|
|
|
1443
1339
|
info,
|
|
1444
1340
|
closingSequence: {
|
|
1445
1341
|
text: closingSequenceText,
|
|
1446
|
-
range: closingSequenceRange
|
|
1447
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingSequenceRange)
|
|
1342
|
+
range: closingSequenceRange
|
|
1448
1343
|
}
|
|
1449
1344
|
};
|
|
1450
1345
|
}
|
|
@@ -1483,7 +1378,10 @@ var custom_container_marker_spacing_default = createRule("custom-container-marke
|
|
|
1483
1378
|
if (hasSpace) return;
|
|
1484
1379
|
context.report({
|
|
1485
1380
|
node,
|
|
1486
|
-
loc:
|
|
1381
|
+
loc: {
|
|
1382
|
+
start: sourceCode.getLocFromIndex(info.range[0]),
|
|
1383
|
+
end: sourceCode.getLocFromIndex(info.range[1])
|
|
1384
|
+
},
|
|
1487
1385
|
messageId: "expectedSpace",
|
|
1488
1386
|
fix(fixer) {
|
|
1489
1387
|
return fixer.insertTextAfterRange(openingSequence.range, " ");
|
|
@@ -1493,7 +1391,10 @@ var custom_container_marker_spacing_default = createRule("custom-container-marke
|
|
|
1493
1391
|
if (!hasSpace) return;
|
|
1494
1392
|
context.report({
|
|
1495
1393
|
node,
|
|
1496
|
-
loc:
|
|
1394
|
+
loc: {
|
|
1395
|
+
start: sourceCode.getLocFromIndex(openingSequence.range[1]),
|
|
1396
|
+
end: sourceCode.getLocFromIndex(info.range[0])
|
|
1397
|
+
},
|
|
1497
1398
|
messageId: "unexpectedSpace",
|
|
1498
1399
|
fix(fixer) {
|
|
1499
1400
|
return fixer.removeRange([openingSequence.range[1], info.range[0]]);
|
|
@@ -1510,17 +1411,15 @@ var custom_container_marker_spacing_default = createRule("custom-container-marke
|
|
|
1510
1411
|
* Parse options with defaults.
|
|
1511
1412
|
*/
|
|
1512
1413
|
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
1414
|
return {
|
|
1522
|
-
linkDefinitionPlacement
|
|
1523
|
-
|
|
1415
|
+
linkDefinitionPlacement: {
|
|
1416
|
+
referencedFromSingleSection: options?.linkDefinitionPlacement?.referencedFromSingleSection || "document-last",
|
|
1417
|
+
referencedFromMultipleSections: options?.linkDefinitionPlacement?.referencedFromMultipleSections || "document-last"
|
|
1418
|
+
},
|
|
1419
|
+
footnoteDefinitionPlacement: {
|
|
1420
|
+
referencedFromSingleSection: options?.footnoteDefinitionPlacement?.referencedFromSingleSection || "document-last",
|
|
1421
|
+
referencedFromMultipleSections: options?.footnoteDefinitionPlacement?.referencedFromMultipleSections || "document-last"
|
|
1422
|
+
}
|
|
1524
1423
|
};
|
|
1525
1424
|
}
|
|
1526
1425
|
var definitions_last_default = createRule("definitions-last", {
|
|
@@ -1693,8 +1592,7 @@ var definitions_last_default = createRule("definitions-last", {
|
|
|
1693
1592
|
* to the last of the document/section.
|
|
1694
1593
|
*/
|
|
1695
1594
|
function fixToMoveFromBeforeLastOfSectionToLastOfSection(fixer, prev, node) {
|
|
1696
|
-
|
|
1697
|
-
return fixToMove(fixer, prev, next, node);
|
|
1595
|
+
return fixToMove(fixer, prev, getNextSibling(sourceCode, prev), node);
|
|
1698
1596
|
}
|
|
1699
1597
|
/**
|
|
1700
1598
|
* Fixer to move a definition or footnote definition node from after the last of the document/section
|
|
@@ -3803,7 +3701,10 @@ var emoji_notation_default = createRule("emoji-notation", {
|
|
|
3803
3701
|
const colon = emojiData.emojiToColon[emoji];
|
|
3804
3702
|
context.report({
|
|
3805
3703
|
node,
|
|
3806
|
-
loc:
|
|
3704
|
+
loc: {
|
|
3705
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
3706
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
3707
|
+
},
|
|
3807
3708
|
messageId: colon ? "preferColon" : "preferUnknownColon",
|
|
3808
3709
|
data: {
|
|
3809
3710
|
unicode: emoji,
|
|
@@ -3831,7 +3732,10 @@ var emoji_notation_default = createRule("emoji-notation", {
|
|
|
3831
3732
|
const emoji = emojiData.colonToEmoji[colon];
|
|
3832
3733
|
context.report({
|
|
3833
3734
|
node,
|
|
3834
|
-
loc:
|
|
3735
|
+
loc: {
|
|
3736
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
3737
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
3738
|
+
},
|
|
3835
3739
|
messageId: emoji ? "preferUnicode" : "preferUnknownUnicode",
|
|
3836
3740
|
data: {
|
|
3837
3741
|
unicode: emoji || "😄",
|
|
@@ -4539,6 +4443,11 @@ const defaultPreserveWords = [
|
|
|
4539
4443
|
"Insomnia",
|
|
4540
4444
|
"Redoc",
|
|
4541
4445
|
"Stoplight",
|
|
4446
|
+
"MIT",
|
|
4447
|
+
"GPL",
|
|
4448
|
+
"AGPL",
|
|
4449
|
+
"LGPL",
|
|
4450
|
+
"CC0",
|
|
4542
4451
|
"FAQ",
|
|
4543
4452
|
"YouTube"
|
|
4544
4453
|
];
|
|
@@ -4679,6 +4588,7 @@ function parsePreserveWordsOption(preserveWordsOption) {
|
|
|
4679
4588
|
|
|
4680
4589
|
//#endregion
|
|
4681
4590
|
//#region src/utils/words.ts
|
|
4591
|
+
const WELLKNOWN_WORDS = new Set(["I"]);
|
|
4682
4592
|
/**
|
|
4683
4593
|
* Parse text into words with offsets
|
|
4684
4594
|
*/
|
|
@@ -4694,6 +4604,7 @@ function parseWordsFromText(text, firstNode, lastNode) {
|
|
|
4694
4604
|
word: token,
|
|
4695
4605
|
offset: match.index,
|
|
4696
4606
|
punctuation,
|
|
4607
|
+
wellknownWord: WELLKNOWN_WORDS.has(token),
|
|
4697
4608
|
first: false,
|
|
4698
4609
|
last: false
|
|
4699
4610
|
});
|
|
@@ -4780,14 +4691,14 @@ var heading_casing_default = createRule("heading-casing", {
|
|
|
4780
4691
|
* Check text node and report word-level errors
|
|
4781
4692
|
*/
|
|
4782
4693
|
function checkTextNode(node, firstNode, lastNode) {
|
|
4783
|
-
const
|
|
4784
|
-
const wordAndOffsets = parseWordsFromText(text, firstNode, lastNode);
|
|
4694
|
+
const wordAndOffsets = parseWordsFromText(sourceCode.getText(node), firstNode, lastNode);
|
|
4785
4695
|
const processed = /* @__PURE__ */ new Set();
|
|
4786
4696
|
for (let index = 0; index < wordAndOffsets.length; index++) {
|
|
4787
4697
|
if (processed.has(index)) continue;
|
|
4788
4698
|
processed.add(index);
|
|
4789
4699
|
const wordAndOffset = wordAndOffsets[index];
|
|
4790
4700
|
if (wordAndOffset.punctuation) continue;
|
|
4701
|
+
if (wordAndOffset.wellknownWord) continue;
|
|
4791
4702
|
if (ignorePatterns.some((pattern) => pattern.test(wordAndOffset.word))) continue;
|
|
4792
4703
|
const preservePhrase = preserveWordsOption.findPreservePhrase((function* () {
|
|
4793
4704
|
const firstWord = wordAndOffsets[index];
|
|
@@ -4828,7 +4739,10 @@ var heading_casing_default = createRule("heading-casing", {
|
|
|
4828
4739
|
actual: word,
|
|
4829
4740
|
expected: expectedWord
|
|
4830
4741
|
},
|
|
4831
|
-
loc:
|
|
4742
|
+
loc: {
|
|
4743
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
4744
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
4745
|
+
},
|
|
4832
4746
|
fix(fixer) {
|
|
4833
4747
|
return fixer.replaceTextRange(range, expectedWord);
|
|
4834
4748
|
}
|
|
@@ -4967,8 +4881,7 @@ var BackwardCharacterCursor = class extends CharacterCursor {
|
|
|
4967
4881
|
* Parse the link definition.
|
|
4968
4882
|
*/
|
|
4969
4883
|
function parseLinkDefinition(sourceCode, node) {
|
|
4970
|
-
const
|
|
4971
|
-
const parsed = parseLinkDefinitionFromText(text);
|
|
4884
|
+
const parsed = parseLinkDefinitionFromText(sourceCode.getText(node));
|
|
4972
4885
|
if (!parsed) return null;
|
|
4973
4886
|
const nodeRange = sourceCode.getRange(node);
|
|
4974
4887
|
const labelRange = [nodeRange[0] + parsed.label.range[0], nodeRange[0] + parsed.label.range[1]];
|
|
@@ -4976,20 +4889,17 @@ function parseLinkDefinition(sourceCode, node) {
|
|
|
4976
4889
|
return {
|
|
4977
4890
|
label: {
|
|
4978
4891
|
text: parsed.label.text,
|
|
4979
|
-
range: labelRange
|
|
4980
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange)
|
|
4892
|
+
range: labelRange
|
|
4981
4893
|
},
|
|
4982
4894
|
destination: {
|
|
4983
4895
|
type: parsed.destination.type,
|
|
4984
4896
|
text: parsed.destination.text,
|
|
4985
|
-
range: destinationRange
|
|
4986
|
-
loc: getSourceLocationFromRange(sourceCode, node, destinationRange)
|
|
4897
|
+
range: destinationRange
|
|
4987
4898
|
},
|
|
4988
4899
|
title: parsed.title ? {
|
|
4989
4900
|
type: parsed.title.type,
|
|
4990
4901
|
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]])
|
|
4902
|
+
range: [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]]
|
|
4993
4903
|
} : null
|
|
4994
4904
|
};
|
|
4995
4905
|
}
|
|
@@ -5084,30 +4994,19 @@ function parseInlineLink(sourceCode, node) {
|
|
|
5084
4994
|
const destinationRange = [textRange[1] + parsed.destination.range[0], textRange[1] + parsed.destination.range[1]];
|
|
5085
4995
|
const closingParenRange = [textRange[1] + parsed.closingParen.range[0], textRange[1] + parsed.closingParen.range[1]];
|
|
5086
4996
|
return {
|
|
5087
|
-
text: {
|
|
5088
|
-
|
|
5089
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5090
|
-
},
|
|
5091
|
-
openingParen: {
|
|
5092
|
-
range: openingParenRange,
|
|
5093
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingParenRange)
|
|
5094
|
-
},
|
|
4997
|
+
text: { range: textRange },
|
|
4998
|
+
openingParen: { range: openingParenRange },
|
|
5095
4999
|
destination: {
|
|
5096
5000
|
type: parsed.destination.type,
|
|
5097
5001
|
text: parsed.destination.text,
|
|
5098
|
-
range: destinationRange
|
|
5099
|
-
loc: getSourceLocationFromRange(sourceCode, node, destinationRange)
|
|
5002
|
+
range: destinationRange
|
|
5100
5003
|
},
|
|
5101
5004
|
title: parsed.title ? {
|
|
5102
5005
|
type: parsed.title.type,
|
|
5103
5006
|
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]])
|
|
5007
|
+
range: [textRange[1] + parsed.title.range[0], textRange[1] + parsed.title.range[1]]
|
|
5106
5008
|
} : null,
|
|
5107
|
-
closingParen: {
|
|
5108
|
-
range: closingParenRange,
|
|
5109
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingParenRange)
|
|
5110
|
-
}
|
|
5009
|
+
closingParen: { range: closingParenRange }
|
|
5111
5010
|
};
|
|
5112
5011
|
}
|
|
5113
5012
|
/**
|
|
@@ -5197,23 +5096,16 @@ function parseLinkReference(sourceCode, node) {
|
|
|
5197
5096
|
textRange = [nodeRange[0], sourceCode.text.indexOf("]", lastChildRange[1]) + 1];
|
|
5198
5097
|
}
|
|
5199
5098
|
if (node.referenceType === "shortcut") return {
|
|
5200
|
-
text: {
|
|
5201
|
-
range: textRange,
|
|
5202
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5203
|
-
},
|
|
5099
|
+
text: { range: textRange },
|
|
5204
5100
|
label: null
|
|
5205
5101
|
};
|
|
5206
5102
|
if (node.referenceType === "collapsed") {
|
|
5207
5103
|
const labelRange$1 = [textRange[1], textRange[1] + 1];
|
|
5208
5104
|
return {
|
|
5209
|
-
text: {
|
|
5210
|
-
range: textRange,
|
|
5211
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5212
|
-
},
|
|
5105
|
+
text: { range: textRange },
|
|
5213
5106
|
label: {
|
|
5214
5107
|
type: "collapsed",
|
|
5215
|
-
range: labelRange$1
|
|
5216
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange$1)
|
|
5108
|
+
range: labelRange$1
|
|
5217
5109
|
}
|
|
5218
5110
|
};
|
|
5219
5111
|
}
|
|
@@ -5228,15 +5120,11 @@ function parseLinkReference(sourceCode, node) {
|
|
|
5228
5120
|
if (sourceCode.text[index] !== "]") return null;
|
|
5229
5121
|
const labelRange = [textRange[1], index + 1];
|
|
5230
5122
|
return {
|
|
5231
|
-
text: {
|
|
5232
|
-
range: textRange,
|
|
5233
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5234
|
-
},
|
|
5123
|
+
text: { range: textRange },
|
|
5235
5124
|
label: {
|
|
5236
5125
|
type: "full",
|
|
5237
5126
|
text: sourceCode.text.slice(...labelRange),
|
|
5238
|
-
range: labelRange
|
|
5239
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange)
|
|
5127
|
+
range: labelRange
|
|
5240
5128
|
}
|
|
5241
5129
|
};
|
|
5242
5130
|
}
|
|
@@ -5247,8 +5135,7 @@ function parseLinkReference(sourceCode, node) {
|
|
|
5247
5135
|
* Parse the image.
|
|
5248
5136
|
*/
|
|
5249
5137
|
function parseImage(sourceCode, node) {
|
|
5250
|
-
const
|
|
5251
|
-
const parsed = parseImageFromText(text);
|
|
5138
|
+
const parsed = parseImageFromText(sourceCode.getText(node));
|
|
5252
5139
|
if (!parsed) return null;
|
|
5253
5140
|
const nodeRange = sourceCode.getRange(node);
|
|
5254
5141
|
const textRange = [nodeRange[0] + parsed.text.range[0], nodeRange[0] + parsed.text.range[1]];
|
|
@@ -5256,30 +5143,19 @@ function parseImage(sourceCode, node) {
|
|
|
5256
5143
|
const destinationRange = [nodeRange[0] + parsed.destination.range[0], nodeRange[0] + parsed.destination.range[1]];
|
|
5257
5144
|
const closingParenRange = [nodeRange[0] + parsed.closingParen.range[0], nodeRange[0] + parsed.closingParen.range[1]];
|
|
5258
5145
|
return {
|
|
5259
|
-
text: {
|
|
5260
|
-
|
|
5261
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5262
|
-
},
|
|
5263
|
-
openingParen: {
|
|
5264
|
-
range: openingParenRange,
|
|
5265
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingParenRange)
|
|
5266
|
-
},
|
|
5146
|
+
text: { range: textRange },
|
|
5147
|
+
openingParen: { range: openingParenRange },
|
|
5267
5148
|
destination: {
|
|
5268
5149
|
type: parsed.destination.type,
|
|
5269
5150
|
text: parsed.destination.text,
|
|
5270
|
-
range: destinationRange
|
|
5271
|
-
loc: getSourceLocationFromRange(sourceCode, node, destinationRange)
|
|
5151
|
+
range: destinationRange
|
|
5272
5152
|
},
|
|
5273
5153
|
title: parsed.title ? {
|
|
5274
5154
|
type: parsed.title.type,
|
|
5275
5155
|
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]])
|
|
5156
|
+
range: [nodeRange[0] + parsed.title.range[0], nodeRange[0] + parsed.title.range[1]]
|
|
5278
5157
|
} : null,
|
|
5279
|
-
closingParen: {
|
|
5280
|
-
range: closingParenRange,
|
|
5281
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingParenRange)
|
|
5282
|
-
}
|
|
5158
|
+
closingParen: { range: closingParenRange }
|
|
5283
5159
|
};
|
|
5284
5160
|
}
|
|
5285
5161
|
/**
|
|
@@ -5359,8 +5235,7 @@ function parseImageReference(sourceCode, node) {
|
|
|
5359
5235
|
return {
|
|
5360
5236
|
text: {
|
|
5361
5237
|
range: textRange$1,
|
|
5362
|
-
text: sourceCode.text.slice(...textRange$1)
|
|
5363
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange$1)
|
|
5238
|
+
text: sourceCode.text.slice(...textRange$1)
|
|
5364
5239
|
},
|
|
5365
5240
|
label: null
|
|
5366
5241
|
};
|
|
@@ -5371,13 +5246,11 @@ function parseImageReference(sourceCode, node) {
|
|
|
5371
5246
|
return {
|
|
5372
5247
|
text: {
|
|
5373
5248
|
range: textRange$1,
|
|
5374
|
-
text: sourceCode.text.slice(...textRange$1)
|
|
5375
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange$1)
|
|
5249
|
+
text: sourceCode.text.slice(...textRange$1)
|
|
5376
5250
|
},
|
|
5377
5251
|
label: {
|
|
5378
5252
|
type: "collapsed",
|
|
5379
|
-
range: labelRange$1
|
|
5380
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange$1)
|
|
5253
|
+
range: labelRange$1
|
|
5381
5254
|
}
|
|
5382
5255
|
};
|
|
5383
5256
|
}
|
|
@@ -5388,14 +5261,12 @@ function parseImageReference(sourceCode, node) {
|
|
|
5388
5261
|
return {
|
|
5389
5262
|
text: {
|
|
5390
5263
|
range: textRange,
|
|
5391
|
-
text: parsed.text.text
|
|
5392
|
-
loc: getSourceLocationFromRange(sourceCode, node, textRange)
|
|
5264
|
+
text: parsed.text.text
|
|
5393
5265
|
},
|
|
5394
5266
|
label: {
|
|
5395
5267
|
type: "full",
|
|
5396
5268
|
text: parsed.label.text,
|
|
5397
|
-
range: labelRange
|
|
5398
|
-
loc: getSourceLocationFromRange(sourceCode, node, labelRange)
|
|
5269
|
+
range: labelRange
|
|
5399
5270
|
}
|
|
5400
5271
|
};
|
|
5401
5272
|
}
|
|
@@ -5440,13 +5311,11 @@ function parseListItem(sourceCode, node) {
|
|
|
5440
5311
|
kind: marker.kind,
|
|
5441
5312
|
text: marker.raw,
|
|
5442
5313
|
value: marker.sequence.value,
|
|
5443
|
-
range: markerRange
|
|
5444
|
-
loc: getSourceLocationFromRange(sourceCode, node, markerRange)
|
|
5314
|
+
range: markerRange
|
|
5445
5315
|
} : {
|
|
5446
5316
|
kind: marker.kind,
|
|
5447
5317
|
text: marker.raw,
|
|
5448
|
-
range: markerRange
|
|
5449
|
-
loc: getSourceLocationFromRange(sourceCode, node, markerRange)
|
|
5318
|
+
range: markerRange
|
|
5450
5319
|
};
|
|
5451
5320
|
if (node.checked == null) return {
|
|
5452
5321
|
marker: parsedMarker,
|
|
@@ -5464,8 +5333,7 @@ function parseListItem(sourceCode, node) {
|
|
|
5464
5333
|
marker: parsedMarker,
|
|
5465
5334
|
taskListItemMarker: {
|
|
5466
5335
|
text: sourceCode.text.slice(...taskListItemMarkerRange),
|
|
5467
|
-
range: taskListItemMarkerRange
|
|
5468
|
-
loc: getSourceLocationFromRange(sourceCode, node, taskListItemMarkerRange)
|
|
5336
|
+
range: taskListItemMarkerRange
|
|
5469
5337
|
}
|
|
5470
5338
|
};
|
|
5471
5339
|
}
|
|
@@ -5488,8 +5356,7 @@ function parseMathBlock(sourceCode, node) {
|
|
|
5488
5356
|
const openingSequenceRange = [range[0], range[0] + parsedOpening.openingSequence.length];
|
|
5489
5357
|
const openingSequence = {
|
|
5490
5358
|
text: parsedOpening.openingSequence,
|
|
5491
|
-
range: openingSequenceRange
|
|
5492
|
-
loc: getSourceLocationFromRange(sourceCode, node, openingSequenceRange)
|
|
5359
|
+
range: openingSequenceRange
|
|
5493
5360
|
};
|
|
5494
5361
|
const parsedClosing = parseMathClosingSequenceFromText(text);
|
|
5495
5362
|
if (parsedClosing == null || parsedClosing.closingSequence !== parsedOpening.openingSequence) {
|
|
@@ -5498,8 +5365,7 @@ function parseMathBlock(sourceCode, node) {
|
|
|
5498
5365
|
openingSequence,
|
|
5499
5366
|
content: {
|
|
5500
5367
|
text: text.slice(parsedOpening.after.length),
|
|
5501
|
-
range: contentRange$1
|
|
5502
|
-
loc: getSourceLocationFromRange(sourceCode, node, contentRange$1)
|
|
5368
|
+
range: contentRange$1
|
|
5503
5369
|
},
|
|
5504
5370
|
closingSequence: null,
|
|
5505
5371
|
after: null
|
|
@@ -5508,23 +5374,19 @@ function parseMathBlock(sourceCode, node) {
|
|
|
5508
5374
|
const spaceAfterClosingRange = [range[1] - parsedClosing.after.length, range[1]];
|
|
5509
5375
|
const spaceAfterClosing = {
|
|
5510
5376
|
text: parsedClosing.after,
|
|
5511
|
-
range: spaceAfterClosingRange
|
|
5512
|
-
loc: getSourceLocationFromRange(sourceCode, node, spaceAfterClosingRange)
|
|
5377
|
+
range: spaceAfterClosingRange
|
|
5513
5378
|
};
|
|
5514
5379
|
const closingSequenceRange = [spaceAfterClosing.range[0] - parsedClosing.closingSequence.length, spaceAfterClosing.range[0]];
|
|
5515
5380
|
const closingSequence = {
|
|
5516
5381
|
text: parsedClosing.closingSequence,
|
|
5517
|
-
range: closingSequenceRange
|
|
5518
|
-
loc: getSourceLocationFromRange(sourceCode, node, closingSequenceRange)
|
|
5382
|
+
range: closingSequenceRange
|
|
5519
5383
|
};
|
|
5520
5384
|
const contentRange = [openingSequence.range[1] + parsedOpening.after.length, closingSequence.range[0] - parsedClosing.before.length];
|
|
5521
|
-
const contentText = sourceCode.text.slice(...contentRange);
|
|
5522
5385
|
return {
|
|
5523
5386
|
openingSequence,
|
|
5524
5387
|
content: {
|
|
5525
|
-
text:
|
|
5526
|
-
range: contentRange
|
|
5527
|
-
loc: getSourceLocationFromRange(sourceCode, node, contentRange)
|
|
5388
|
+
text: sourceCode.text.slice(...contentRange),
|
|
5389
|
+
range: contentRange
|
|
5528
5390
|
},
|
|
5529
5391
|
closingSequence,
|
|
5530
5392
|
after: spaceAfterClosing.range[0] < spaceAfterClosing.range[1] ? spaceAfterClosing : null
|
|
@@ -5723,8 +5585,7 @@ var indent_default = createRule("indent", {
|
|
|
5723
5585
|
return this._parsed ??= parseListItem(sourceCode, this.node);
|
|
5724
5586
|
}
|
|
5725
5587
|
getExpectedIndent({ lineNumber, block }) {
|
|
5726
|
-
|
|
5727
|
-
if (lineNumber === loc.start.line) return this.getExpectedIndentForFirstLine();
|
|
5588
|
+
if (lineNumber === this.nodeLoc.start.line) return this.getExpectedIndentForFirstLine();
|
|
5728
5589
|
const expected = this.getExpectedIndentAfterFirstLine();
|
|
5729
5590
|
if (expected === "ignore") return "ignore";
|
|
5730
5591
|
if (!block) return expected;
|
|
@@ -5742,8 +5603,8 @@ var indent_default = createRule("indent", {
|
|
|
5742
5603
|
const baseIndent = getWidth(lineText.slice(0, loc.start.column - 1));
|
|
5743
5604
|
return this._expectedIndentForFirstLine = Math.max(baseIndent + options.listItems.first, baseIndent + parsed.marker.text.length + 1);
|
|
5744
5605
|
}
|
|
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.
|
|
5606
|
+
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;
|
|
5607
|
+
return this._expectedIndentForFirstLine = getWidth(lineText.slice(0, sourceCode.getLocFromIndex(parsed.marker.range[1]).column - 1)) + options.listItems.first;
|
|
5747
5608
|
}
|
|
5748
5609
|
getExpectedIndentAfterFirstLine() {
|
|
5749
5610
|
if (this._expectedIndentForOtherLines != null) return this._expectedIndentForOtherLines;
|
|
@@ -5768,19 +5629,20 @@ var indent_default = createRule("indent", {
|
|
|
5768
5629
|
return this._expectedIndentForOtherLines = Math.max(baseIndent + options.listItems.other, minimumLineIndent);
|
|
5769
5630
|
}
|
|
5770
5631
|
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.
|
|
5632
|
+
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;
|
|
5633
|
+
return this._expectedIndentForOtherLines = getWidth(lineText.slice(0, sourceCode.getLocFromIndex(parsed.marker.range[1]).column - 1)) + options.listItems.other;
|
|
5773
5634
|
}
|
|
5774
5635
|
getMinimumLineIndent() {
|
|
5775
5636
|
const actualFirstLineIndent = this.getActualFirstLineIndent({ withoutTaskListMarker: true });
|
|
5776
5637
|
if (actualFirstLineIndent != null) return this._expectedIndentForOtherLines = actualFirstLineIndent;
|
|
5777
5638
|
const parsed = this.getParsedListItem();
|
|
5778
|
-
const
|
|
5779
|
-
|
|
5639
|
+
const markerEndLoc = sourceCode.getLocFromIndex(parsed.marker.range[1]);
|
|
5640
|
+
const lineText = sourceCode.lines[markerEndLoc.line - 1];
|
|
5641
|
+
return getWidth(lineText.slice(0, markerEndLoc.column - 1)) + 1;
|
|
5780
5642
|
}
|
|
5781
5643
|
getActualFirstLineIndent({ withoutTaskListMarker = false } = {}) {
|
|
5782
5644
|
const parsed = this.getParsedListItem();
|
|
5783
|
-
const markerEndPos = withoutTaskListMarker ? parsed.marker.
|
|
5645
|
+
const markerEndPos = sourceCode.getLocFromIndex(withoutTaskListMarker ? parsed.marker.range[1] : parsed.taskListItemMarker?.range[1] ?? parsed.marker.range[1]);
|
|
5784
5646
|
const lineText = sourceCode.lines[markerEndPos.line - 1];
|
|
5785
5647
|
const afterMarkerText = lineText.slice(markerEndPos.column - 1);
|
|
5786
5648
|
const trimmedAfterMarkerText = afterMarkerText.trimStart();
|
|
@@ -5966,21 +5828,23 @@ var indent_default = createRule("indent", {
|
|
|
5966
5828
|
});
|
|
5967
5829
|
if (baseIndent === "ignore") return "ignore";
|
|
5968
5830
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
5969
|
-
|
|
5970
|
-
if (lineNumber
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
|
|
5831
|
+
const labelEndLoc = sourceCode.getLocFromIndex(parsed.label.range[1]);
|
|
5832
|
+
if (lineNumber < labelEndLoc.line) return baseIndent + 2;
|
|
5833
|
+
if (lineNumber === labelEndLoc.line) {
|
|
5834
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
5835
|
+
if (lineText == null) return baseIndent;
|
|
5836
|
+
const between = lineText.slice(column - 1, labelEndLoc.column - 2);
|
|
5974
5837
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
5975
5838
|
}
|
|
5976
|
-
if (lineNumber <= parsed.destination.
|
|
5839
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.destination.range[1]).line) return baseIndent + 4;
|
|
5977
5840
|
if (!parsed.title) return baseIndent;
|
|
5978
|
-
if (lineNumber <= parsed.title.
|
|
5979
|
-
|
|
5980
|
-
if (lineNumber
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
|
|
5841
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.title.range[0]).line) return baseIndent + 4;
|
|
5842
|
+
const titleEndLoc = sourceCode.getLocFromIndex(parsed.title.range[1]);
|
|
5843
|
+
if (lineNumber < titleEndLoc.line) return baseIndent + 6;
|
|
5844
|
+
if (lineNumber === titleEndLoc.line) {
|
|
5845
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
5846
|
+
if (lineText == null) return baseIndent;
|
|
5847
|
+
const between = lineText.slice(column - 1, titleEndLoc.column - 2);
|
|
5984
5848
|
return !between || isWhitespace(between) ? baseIndent + 4 : baseIndent + 6;
|
|
5985
5849
|
}
|
|
5986
5850
|
return baseIndent;
|
|
@@ -6010,8 +5874,7 @@ var indent_default = createRule("indent", {
|
|
|
6010
5874
|
* Verify a list node.
|
|
6011
5875
|
*/
|
|
6012
5876
|
function verifyList(node) {
|
|
6013
|
-
|
|
6014
|
-
verifyLinesIndent([loc.start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
5877
|
+
verifyLinesIndent([sourceCode.getLoc(node).start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
6015
5878
|
lineNumber,
|
|
6016
5879
|
block: true
|
|
6017
5880
|
}), additionalFixes);
|
|
@@ -6039,19 +5902,23 @@ var indent_default = createRule("indent", {
|
|
|
6039
5902
|
* Get a fix for a line.
|
|
6040
5903
|
*/
|
|
6041
5904
|
function getFixForLine(lineNumber, actualIndentWidth) {
|
|
6042
|
-
const
|
|
5905
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
5906
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
5907
|
+
line: lineNumber,
|
|
5908
|
+
column: 1
|
|
5909
|
+
});
|
|
6043
5910
|
if (info.expectedIndentWidth > actualIndentWidth) {
|
|
6044
|
-
const before$1 = sliceWidth(
|
|
5911
|
+
const before$1 = sliceWidth(lineText, 0, actualIndentWidth);
|
|
6045
5912
|
const diffWidth = info.expectedIndentWidth - actualIndentWidth;
|
|
6046
|
-
return fixer.insertTextAfterRange([
|
|
5913
|
+
return fixer.insertTextAfterRange([lineStartIndex, lineStartIndex + before$1.length], " ".repeat(diffWidth));
|
|
6047
5914
|
}
|
|
6048
|
-
let before = sliceWidth(
|
|
6049
|
-
let between = sliceWidth(
|
|
5915
|
+
let before = sliceWidth(lineText, 0, info.expectedIndentWidth);
|
|
5916
|
+
let between = sliceWidth(lineText, info.expectedIndentWidth, actualIndentWidth);
|
|
6050
5917
|
while (between && !isSpaceOrTab(between)) {
|
|
6051
5918
|
before += between[0];
|
|
6052
5919
|
between = between.slice(1);
|
|
6053
5920
|
}
|
|
6054
|
-
return fixer.replaceTextRange([
|
|
5921
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + before.length + between.length], before);
|
|
6055
5922
|
}
|
|
6056
5923
|
}
|
|
6057
5924
|
}
|
|
@@ -6072,7 +5939,7 @@ var indent_default = createRule("indent", {
|
|
|
6072
5939
|
const parsed = parseMathBlock(sourceCode, node);
|
|
6073
5940
|
if (!parsed) return;
|
|
6074
5941
|
const loc = sourceCode.getLoc(node);
|
|
6075
|
-
const endLineToBeChecked = parsed.closingSequence && inlineToBeChecked(parsed.closingSequence.
|
|
5942
|
+
const endLineToBeChecked = parsed.closingSequence && inlineToBeChecked(sourceCode.getLocFromIndex(parsed.closingSequence.range[0]));
|
|
6076
5943
|
verifyLinesIndent(endLineToBeChecked ? [loc.start.line, loc.end.line] : [loc.start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
6077
5944
|
lineNumber,
|
|
6078
5945
|
block: true
|
|
@@ -6094,8 +5961,7 @@ var indent_default = createRule("indent", {
|
|
|
6094
5961
|
* Verify a footnote definition node.
|
|
6095
5962
|
*/
|
|
6096
5963
|
function verifyFootnoteDefinition(node) {
|
|
6097
|
-
|
|
6098
|
-
verifyLinesIndent([loc.start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
5964
|
+
verifyLinesIndent([sourceCode.getLoc(node).start.line], (lineNumber) => blockStack.getExpectedIndent({
|
|
6099
5965
|
lineNumber,
|
|
6100
5966
|
block: true
|
|
6101
5967
|
}));
|
|
@@ -6138,10 +6004,11 @@ var indent_default = createRule("indent", {
|
|
|
6138
6004
|
const parsed = parseInlineLink(sourceCode, node);
|
|
6139
6005
|
if (!parsed) return;
|
|
6140
6006
|
const lastChild = node.children.at(-1);
|
|
6141
|
-
if (lastChild && parsed.text.
|
|
6007
|
+
if (lastChild && sourceCode.getLocFromIndex(parsed.text.range[0]).line < sourceCode.getLocFromIndex(parsed.text.range[1]).line) {
|
|
6142
6008
|
const lastChildLoc = sourceCode.getLoc(lastChild);
|
|
6143
6009
|
const lastChildEndLine = lastChild.type === "text" && lastChild.value.endsWith("\n") ? lastChildLoc.end.line - 1 : lastChildLoc.end.line;
|
|
6144
|
-
|
|
6010
|
+
const textStartLoc = sourceCode.getLocFromIndex(parsed.text.range[0]);
|
|
6011
|
+
lines = lines.filter((lineNumber) => lineNumber <= textStartLoc.line || lastChildEndLine < lineNumber);
|
|
6145
6012
|
}
|
|
6146
6013
|
verifyLinesIndent(lines, (lineNumber, column) => {
|
|
6147
6014
|
const baseIndent = blockStack.getExpectedIndent({
|
|
@@ -6150,16 +6017,17 @@ var indent_default = createRule("indent", {
|
|
|
6150
6017
|
});
|
|
6151
6018
|
if (baseIndent === "ignore") return "ignore";
|
|
6152
6019
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6153
|
-
if (lineNumber < parsed.text.
|
|
6154
|
-
if (lineNumber <= parsed.openingParen.
|
|
6155
|
-
if (lineNumber <= parsed.destination.
|
|
6020
|
+
if (lineNumber < sourceCode.getLocFromIndex(parsed.text.range[1]).line) return baseIndent + 2;
|
|
6021
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.openingParen.range[1]).line) return baseIndent;
|
|
6022
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.destination.range[1]).line) return baseIndent + 2;
|
|
6156
6023
|
if (!parsed.title) return baseIndent;
|
|
6157
|
-
if (lineNumber <= parsed.title.
|
|
6158
|
-
|
|
6159
|
-
if (lineNumber
|
|
6160
|
-
|
|
6161
|
-
|
|
6162
|
-
|
|
6024
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.title.range[0]).line) return baseIndent + 2;
|
|
6025
|
+
const titleEndLoc = sourceCode.getLocFromIndex(parsed.title.range[1]);
|
|
6026
|
+
if (lineNumber < titleEndLoc.line) return baseIndent + 4;
|
|
6027
|
+
if (lineNumber === titleEndLoc.line) {
|
|
6028
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6029
|
+
if (lineText == null) return baseIndent;
|
|
6030
|
+
const between = lineText.slice(column - 1, titleEndLoc.column - 2);
|
|
6163
6031
|
return !between || isWhitespace(between) ? baseIndent + 2 : baseIndent + 4;
|
|
6164
6032
|
}
|
|
6165
6033
|
return baseIndent;
|
|
@@ -6176,10 +6044,11 @@ var indent_default = createRule("indent", {
|
|
|
6176
6044
|
let lines = lineNumbersFromRange(loc.start.line, loc.end.line);
|
|
6177
6045
|
if (!inlineToBeChecked(loc.start)) lines = lines.slice(1);
|
|
6178
6046
|
const lastChild = node.children.at(-1);
|
|
6179
|
-
if (lastChild && parsed.text.
|
|
6047
|
+
if (lastChild && sourceCode.getLocFromIndex(parsed.text.range[0]).line < sourceCode.getLocFromIndex(parsed.text.range[1]).line) {
|
|
6180
6048
|
const lastChildLoc = sourceCode.getLoc(lastChild);
|
|
6181
6049
|
const lastChildEndLine = lastChild.type === "text" && lastChild.value.endsWith("\n") ? lastChildLoc.end.line - 1 : lastChildLoc.end.line;
|
|
6182
|
-
|
|
6050
|
+
const textStartLoc = sourceCode.getLocFromIndex(parsed.text.range[0]);
|
|
6051
|
+
lines = lines.filter((lineNumber) => lineNumber <= textStartLoc.line || lastChildEndLine < lineNumber);
|
|
6183
6052
|
}
|
|
6184
6053
|
verifyLinesIndent(lines, (lineNumber, column) => {
|
|
6185
6054
|
const baseIndent = blockStack.getExpectedIndent({
|
|
@@ -6188,14 +6057,15 @@ var indent_default = createRule("indent", {
|
|
|
6188
6057
|
});
|
|
6189
6058
|
if (baseIndent === "ignore") return "ignore";
|
|
6190
6059
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6191
|
-
if (lineNumber < parsed.text.
|
|
6060
|
+
if (lineNumber < sourceCode.getLocFromIndex(parsed.text.range[1]).line) return baseIndent + 2;
|
|
6192
6061
|
if (!parsed.label) return baseIndent;
|
|
6193
|
-
if (lineNumber <= parsed.label.
|
|
6194
|
-
|
|
6195
|
-
if (lineNumber
|
|
6196
|
-
|
|
6197
|
-
|
|
6198
|
-
|
|
6062
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.label.range[0]).line) return baseIndent;
|
|
6063
|
+
const labelEndLoc = sourceCode.getLocFromIndex(parsed.label.range[1]);
|
|
6064
|
+
if (lineNumber < labelEndLoc.line) return baseIndent + 2;
|
|
6065
|
+
if (lineNumber === labelEndLoc.line) {
|
|
6066
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6067
|
+
if (lineText == null) return baseIndent;
|
|
6068
|
+
const between = lineText.slice(column - 1, labelEndLoc.column - 2);
|
|
6199
6069
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6200
6070
|
}
|
|
6201
6071
|
return baseIndent;
|
|
@@ -6217,22 +6087,24 @@ var indent_default = createRule("indent", {
|
|
|
6217
6087
|
});
|
|
6218
6088
|
if (baseIndent === "ignore") return "ignore";
|
|
6219
6089
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6220
|
-
|
|
6221
|
-
if (lineNumber
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
|
|
6090
|
+
const textEndLoc = sourceCode.getLocFromIndex(parsed.text.range[1]);
|
|
6091
|
+
if (lineNumber < textEndLoc.line) return baseIndent + 2;
|
|
6092
|
+
if (lineNumber === textEndLoc.line) {
|
|
6093
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6094
|
+
if (lineText == null) return baseIndent;
|
|
6095
|
+
const between = lineText.slice(column - 1, textEndLoc.column - 2);
|
|
6225
6096
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6226
6097
|
}
|
|
6227
|
-
if (lineNumber <= parsed.openingParen.
|
|
6228
|
-
if (lineNumber <= parsed.destination.
|
|
6098
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.openingParen.range[1]).line) return baseIndent;
|
|
6099
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.destination.range[1]).line) return baseIndent + 2;
|
|
6229
6100
|
if (!parsed.title) return baseIndent;
|
|
6230
|
-
if (lineNumber <= parsed.title.
|
|
6231
|
-
|
|
6232
|
-
if (lineNumber
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6101
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.title.range[0]).line) return baseIndent + 2;
|
|
6102
|
+
const titleEndLoc = sourceCode.getLocFromIndex(parsed.title.range[1]);
|
|
6103
|
+
if (lineNumber < titleEndLoc.line) return baseIndent + 4;
|
|
6104
|
+
if (lineNumber === titleEndLoc.line) {
|
|
6105
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6106
|
+
if (lineText == null) return baseIndent;
|
|
6107
|
+
const between = lineText.slice(column - 1, titleEndLoc.column - 2);
|
|
6236
6108
|
return !between || isWhitespace(between) ? baseIndent + 2 : baseIndent + 4;
|
|
6237
6109
|
}
|
|
6238
6110
|
return baseIndent;
|
|
@@ -6254,20 +6126,22 @@ var indent_default = createRule("indent", {
|
|
|
6254
6126
|
});
|
|
6255
6127
|
if (baseIndent === "ignore") return "ignore";
|
|
6256
6128
|
if (lineNumber <= loc.start.line) return baseIndent;
|
|
6257
|
-
|
|
6258
|
-
if (lineNumber
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
|
|
6129
|
+
const textEndLoc = sourceCode.getLocFromIndex(parsed.text.range[1]);
|
|
6130
|
+
if (lineNumber < textEndLoc.line) return baseIndent + 2;
|
|
6131
|
+
if (lineNumber === textEndLoc.line) {
|
|
6132
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6133
|
+
if (lineText == null) return baseIndent;
|
|
6134
|
+
const between = lineText.slice(column - 1, textEndLoc.column - 2);
|
|
6262
6135
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6263
6136
|
}
|
|
6264
6137
|
if (!parsed.label) return baseIndent;
|
|
6265
|
-
if (lineNumber <= parsed.label.
|
|
6266
|
-
|
|
6267
|
-
if (lineNumber
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
|
|
6138
|
+
if (lineNumber <= sourceCode.getLocFromIndex(parsed.label.range[0]).line) return baseIndent;
|
|
6139
|
+
const labelEndLoc = sourceCode.getLocFromIndex(parsed.label.range[1]);
|
|
6140
|
+
if (lineNumber < labelEndLoc.line) return baseIndent + 2;
|
|
6141
|
+
if (lineNumber === labelEndLoc.line) {
|
|
6142
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6143
|
+
if (lineText == null) return baseIndent;
|
|
6144
|
+
const between = lineText.slice(column - 1, labelEndLoc.column - 2);
|
|
6271
6145
|
return !between || isWhitespace(between) ? baseIndent : baseIndent + 2;
|
|
6272
6146
|
}
|
|
6273
6147
|
return baseIndent;
|
|
@@ -6307,7 +6181,7 @@ var indent_default = createRule("indent", {
|
|
|
6307
6181
|
const lineText = sourceCode.lines[position.line - 1];
|
|
6308
6182
|
if (listItem) {
|
|
6309
6183
|
const parsed = listItem.getParsedListItem();
|
|
6310
|
-
const indentText = lineText.slice((parsed.taskListItemMarker
|
|
6184
|
+
const indentText = lineText.slice(sourceCode.getLocFromIndex((parsed.taskListItemMarker ?? parsed.marker).range[1]).column - 1, position.column - 1);
|
|
6311
6185
|
if (indentText && !isSpaceOrTab(indentText)) return false;
|
|
6312
6186
|
} else if (blockquote) {
|
|
6313
6187
|
if (atWidth(lineText, blockquote.getMarkerIndent()) !== ">") return false;
|
|
@@ -6344,11 +6218,11 @@ var indent_default = createRule("indent", {
|
|
|
6344
6218
|
function verifyLinesIndentFromRoot(lineNumbers, expectedIndentWidthProvider, additionalFixes) {
|
|
6345
6219
|
const reports = [];
|
|
6346
6220
|
for (const lineNumber of lineNumbers) {
|
|
6347
|
-
const
|
|
6348
|
-
if (
|
|
6221
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6222
|
+
if (lineText == null) return;
|
|
6349
6223
|
const listItem = blockStack.getCurrentListItemAtLine(lineNumber);
|
|
6350
6224
|
if (!listItem) {
|
|
6351
|
-
const indentText = /^\s*/u.exec(
|
|
6225
|
+
const indentText = /^\s*/u.exec(lineText)[0];
|
|
6352
6226
|
const actualIndentWidth = getWidth(indentText);
|
|
6353
6227
|
const expectedIndentWidth = expectedIndentWidthProvider(lineNumber, 1);
|
|
6354
6228
|
if (expectedIndentWidth === "ignore") continue;
|
|
@@ -6356,11 +6230,11 @@ var indent_default = createRule("indent", {
|
|
|
6356
6230
|
reports.push({
|
|
6357
6231
|
loc: {
|
|
6358
6232
|
start: {
|
|
6359
|
-
line:
|
|
6233
|
+
line: lineNumber,
|
|
6360
6234
|
column: 1
|
|
6361
6235
|
},
|
|
6362
6236
|
end: {
|
|
6363
|
-
line:
|
|
6237
|
+
line: lineNumber,
|
|
6364
6238
|
column: indentText.length + 1
|
|
6365
6239
|
}
|
|
6366
6240
|
},
|
|
@@ -6370,14 +6244,18 @@ var indent_default = createRule("indent", {
|
|
|
6370
6244
|
actual: actualIndentWidth
|
|
6371
6245
|
},
|
|
6372
6246
|
fix(fixer) {
|
|
6373
|
-
|
|
6247
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6248
|
+
line: lineNumber,
|
|
6249
|
+
column: 1
|
|
6250
|
+
});
|
|
6251
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + indentText.length], " ".repeat(expectedIndentWidth));
|
|
6374
6252
|
},
|
|
6375
6253
|
expectedIndentWidth,
|
|
6376
6254
|
actualIndentWidth
|
|
6377
6255
|
});
|
|
6378
6256
|
continue;
|
|
6379
6257
|
}
|
|
6380
|
-
const report = verifyLineIndentFromListItemMarker(
|
|
6258
|
+
const report = verifyLineIndentFromListItemMarker(lineNumber, listItem, expectedIndentWidthProvider);
|
|
6381
6259
|
if (!report) continue;
|
|
6382
6260
|
reports.push(report);
|
|
6383
6261
|
}
|
|
@@ -6400,16 +6278,16 @@ var indent_default = createRule("indent", {
|
|
|
6400
6278
|
const reports = [];
|
|
6401
6279
|
let cannotFix = false;
|
|
6402
6280
|
for (const lineNumber of lineNumbers) {
|
|
6403
|
-
const
|
|
6404
|
-
if (
|
|
6405
|
-
if (atWidth(
|
|
6281
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6282
|
+
if (lineText == null) return;
|
|
6283
|
+
if (atWidth(lineText, blockquote.getMarkerIndent()) !== ">") {
|
|
6406
6284
|
cannotFix = true;
|
|
6407
6285
|
continue;
|
|
6408
6286
|
}
|
|
6409
6287
|
const listItem = blockStack.getCurrentListItemAtLine(lineNumber);
|
|
6410
6288
|
if (!listItem) {
|
|
6411
|
-
const before =
|
|
6412
|
-
const after =
|
|
6289
|
+
const before = lineText.slice(0, blockquoteLoc.start.column);
|
|
6290
|
+
const after = lineText.slice(blockquoteLoc.start.column);
|
|
6413
6291
|
const indentText = /^\s*/u.exec(after)[0];
|
|
6414
6292
|
const actualIndentWidth = getWidth(before + indentText);
|
|
6415
6293
|
const expectedIndentWidth = expectedIndentWidthProvider(lineNumber, blockquoteLoc.start.column + 1);
|
|
@@ -6419,11 +6297,11 @@ var indent_default = createRule("indent", {
|
|
|
6419
6297
|
reports.push({
|
|
6420
6298
|
loc: {
|
|
6421
6299
|
start: {
|
|
6422
|
-
line:
|
|
6300
|
+
line: lineNumber,
|
|
6423
6301
|
column: blockquoteLoc.start.column + 1
|
|
6424
6302
|
},
|
|
6425
6303
|
end: {
|
|
6426
|
-
line:
|
|
6304
|
+
line: lineNumber,
|
|
6427
6305
|
column: blockquoteLoc.start.column + 1 + indentText.length
|
|
6428
6306
|
}
|
|
6429
6307
|
},
|
|
@@ -6433,14 +6311,18 @@ var indent_default = createRule("indent", {
|
|
|
6433
6311
|
actual: actualIndentWidth - linePrefixWidth
|
|
6434
6312
|
},
|
|
6435
6313
|
fix(fixer) {
|
|
6436
|
-
|
|
6314
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6315
|
+
line: lineNumber,
|
|
6316
|
+
column: 1
|
|
6317
|
+
});
|
|
6318
|
+
return fixer.replaceTextRange([lineStartIndex + blockquoteLoc.start.column, lineStartIndex + blockquoteLoc.start.column + indentText.length], " ".repeat(expectedIndentWidth - linePrefixWidth));
|
|
6437
6319
|
},
|
|
6438
6320
|
expectedIndentWidth,
|
|
6439
6321
|
actualIndentWidth
|
|
6440
6322
|
});
|
|
6441
6323
|
continue;
|
|
6442
6324
|
}
|
|
6443
|
-
const report = verifyLineIndentFromListItemMarker(
|
|
6325
|
+
const report = verifyLineIndentFromListItemMarker(lineNumber, listItem, expectedIndentWidthProvider);
|
|
6444
6326
|
if (!report) continue;
|
|
6445
6327
|
reports.push(report);
|
|
6446
6328
|
}
|
|
@@ -6459,20 +6341,28 @@ var indent_default = createRule("indent", {
|
|
|
6459
6341
|
/**
|
|
6460
6342
|
* Verify the indentation of the line from the list item marker.
|
|
6461
6343
|
*/
|
|
6462
|
-
function verifyLineIndentFromListItemMarker(
|
|
6344
|
+
function verifyLineIndentFromListItemMarker(lineNumber, listItem, expectedIndentWidthProvider) {
|
|
6463
6345
|
const parsed = listItem.getParsedListItem();
|
|
6464
|
-
const markerAfterColumn = (parsed.taskListItemMarker?.
|
|
6465
|
-
const
|
|
6466
|
-
const
|
|
6346
|
+
const markerAfterColumn = sourceCode.getLocFromIndex(parsed.taskListItemMarker?.range[1] ?? parsed.marker.range[1]).column;
|
|
6347
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6348
|
+
const before = lineText.slice(0, markerAfterColumn - 1);
|
|
6349
|
+
const after = lineText.slice(markerAfterColumn - 1);
|
|
6467
6350
|
const indentText = /^\s*/u.exec(after)[0];
|
|
6468
6351
|
const actualIndentWidth = getWidth(before + indentText);
|
|
6469
|
-
const expectedIndentWidth = expectedIndentWidthProvider(
|
|
6352
|
+
const expectedIndentWidth = expectedIndentWidthProvider(lineNumber, markerAfterColumn);
|
|
6470
6353
|
if (expectedIndentWidth === "ignore") return null;
|
|
6471
6354
|
if (actualIndentWidth === expectedIndentWidth) return null;
|
|
6472
6355
|
const linePrefixWidth = getWidth(before);
|
|
6473
|
-
const
|
|
6356
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6357
|
+
line: lineNumber,
|
|
6358
|
+
column: 1
|
|
6359
|
+
});
|
|
6360
|
+
const range = [lineStartIndex + before.length, lineStartIndex + before.length + indentText.length];
|
|
6474
6361
|
return {
|
|
6475
|
-
loc:
|
|
6362
|
+
loc: {
|
|
6363
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
6364
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
6365
|
+
},
|
|
6476
6366
|
messageId: indentText.includes(" ") ? "wrongIndentationFromListMarkerWithTab" : "wrongIndentationFromListMarker",
|
|
6477
6367
|
data: {
|
|
6478
6368
|
expected: expectedIndentWidth - linePrefixWidth,
|
|
@@ -6492,22 +6382,30 @@ var indent_default = createRule("indent", {
|
|
|
6492
6382
|
const loc = sourceCode.getLoc(node);
|
|
6493
6383
|
if (info.loc.start.line !== loc.start.line) return;
|
|
6494
6384
|
for (let lineNumber = fixStartLine; lineNumber <= fixEndLine; lineNumber++) {
|
|
6495
|
-
const
|
|
6496
|
-
if (
|
|
6385
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6386
|
+
if (lineText == null) continue;
|
|
6497
6387
|
if (info.expectedIndentWidth > info.actualIndentWidth) {
|
|
6498
|
-
const before = sliceWidth(
|
|
6499
|
-
const after = sliceWidth(
|
|
6388
|
+
const before = sliceWidth(lineText, 0, info.actualIndentWidth);
|
|
6389
|
+
const after = sliceWidth(lineText, info.actualIndentWidth);
|
|
6500
6390
|
const diffWidth = info.expectedIndentWidth - info.actualIndentWidth;
|
|
6501
|
-
|
|
6391
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6392
|
+
line: lineNumber,
|
|
6393
|
+
column: 1
|
|
6394
|
+
});
|
|
6395
|
+
yield fixer.replaceTextRange([lineStartIndex, lineStartIndex + lineText.length], before + " ".repeat(diffWidth) + after);
|
|
6502
6396
|
} else {
|
|
6503
|
-
let before = sliceWidth(
|
|
6504
|
-
let between = sliceWidth(
|
|
6505
|
-
const after = sliceWidth(
|
|
6397
|
+
let before = sliceWidth(lineText, 0, info.expectedIndentWidth);
|
|
6398
|
+
let between = sliceWidth(lineText, info.expectedIndentWidth, info.actualIndentWidth);
|
|
6399
|
+
const after = sliceWidth(lineText, info.actualIndentWidth);
|
|
6506
6400
|
while (between && !isSpaceOrTab(between)) {
|
|
6507
6401
|
before += between[0];
|
|
6508
6402
|
between = between.slice(1);
|
|
6509
6403
|
}
|
|
6510
|
-
|
|
6404
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6405
|
+
line: lineNumber,
|
|
6406
|
+
column: 1
|
|
6407
|
+
});
|
|
6408
|
+
yield fixer.replaceTextRange([lineStartIndex, lineStartIndex + lineText.length], before + after);
|
|
6511
6409
|
}
|
|
6512
6410
|
}
|
|
6513
6411
|
}
|
|
@@ -6521,14 +6419,13 @@ var indent_default = createRule("indent", {
|
|
|
6521
6419
|
*/
|
|
6522
6420
|
function parseSetextHeading(sourceCode, node) {
|
|
6523
6421
|
if (getHeadingKind(sourceCode, node) !== "setext") return null;
|
|
6524
|
-
const lines = getParsedLines(sourceCode);
|
|
6525
6422
|
const contentLines = [];
|
|
6526
6423
|
const nodeLoc = sourceCode.getLoc(node);
|
|
6527
6424
|
for (let lineNumber = nodeLoc.start.line; lineNumber < nodeLoc.end.line; lineNumber++) {
|
|
6528
|
-
const content = parseContent(
|
|
6425
|
+
const content = parseContent(sourceCode, lineNumber);
|
|
6529
6426
|
contentLines.push(content);
|
|
6530
6427
|
}
|
|
6531
|
-
const underline = parseUnderline(
|
|
6428
|
+
const underline = parseUnderline(sourceCode, nodeLoc.end.line);
|
|
6532
6429
|
if (!underline) return null;
|
|
6533
6430
|
return {
|
|
6534
6431
|
contentLines,
|
|
@@ -6538,12 +6435,13 @@ function parseSetextHeading(sourceCode, node) {
|
|
|
6538
6435
|
/**
|
|
6539
6436
|
* Parse the content line of a setext heading.
|
|
6540
6437
|
*/
|
|
6541
|
-
function parseContent(
|
|
6438
|
+
function parseContent(sourceCode, lineNumber) {
|
|
6439
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6542
6440
|
let prefix = "";
|
|
6543
6441
|
let spaceBefore = "";
|
|
6544
6442
|
let suffix = "";
|
|
6545
|
-
for (let index = 0; index <
|
|
6546
|
-
const c =
|
|
6443
|
+
for (let index = 0; index < lineText.length; index++) {
|
|
6444
|
+
const c = lineText[index];
|
|
6547
6445
|
if (!c.trim()) {
|
|
6548
6446
|
spaceBefore += c;
|
|
6549
6447
|
continue;
|
|
@@ -6553,24 +6451,18 @@ function parseContent(line) {
|
|
|
6553
6451
|
spaceBefore = "";
|
|
6554
6452
|
continue;
|
|
6555
6453
|
}
|
|
6556
|
-
suffix =
|
|
6454
|
+
suffix = lineText.slice(index);
|
|
6557
6455
|
break;
|
|
6558
6456
|
}
|
|
6559
6457
|
const content = suffix.trimEnd();
|
|
6560
6458
|
const spaceAfter = suffix.slice(content.length);
|
|
6459
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6460
|
+
line: lineNumber,
|
|
6461
|
+
column: 1
|
|
6462
|
+
});
|
|
6561
6463
|
return {
|
|
6562
6464
|
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
|
-
},
|
|
6465
|
+
range: [lineStartIndex + prefix.length + spaceBefore.length, lineStartIndex + lineText.length - spaceAfter.length],
|
|
6574
6466
|
raws: {
|
|
6575
6467
|
prefix,
|
|
6576
6468
|
spaceBefore,
|
|
@@ -6581,14 +6473,15 @@ function parseContent(line) {
|
|
|
6581
6473
|
/**
|
|
6582
6474
|
* Parse the underline of a setext heading.
|
|
6583
6475
|
*/
|
|
6584
|
-
function parseUnderline(
|
|
6476
|
+
function parseUnderline(sourceCode, lineNumber) {
|
|
6477
|
+
const lineText = sourceCode.lines[lineNumber - 1];
|
|
6585
6478
|
let marker = null;
|
|
6586
6479
|
let underlineText = "";
|
|
6587
6480
|
let prefix = "";
|
|
6588
6481
|
let spaceBefore = "";
|
|
6589
6482
|
let spaceAfter = "";
|
|
6590
|
-
for (let index =
|
|
6591
|
-
const c =
|
|
6483
|
+
for (let index = lineText.length - 1; index >= 0; index--) {
|
|
6484
|
+
const c = lineText[index];
|
|
6592
6485
|
if (!marker) {
|
|
6593
6486
|
if (c === "=" || c === "-") {
|
|
6594
6487
|
underlineText = c + underlineText;
|
|
@@ -6602,25 +6495,18 @@ function parseUnderline(line) {
|
|
|
6602
6495
|
spaceBefore = "";
|
|
6603
6496
|
} else if (!c.trim()) spaceBefore = c + spaceBefore;
|
|
6604
6497
|
else {
|
|
6605
|
-
prefix =
|
|
6498
|
+
prefix = lineText.slice(0, index + 1);
|
|
6606
6499
|
break;
|
|
6607
6500
|
}
|
|
6608
6501
|
}
|
|
6609
6502
|
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
|
-
};
|
|
6503
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
6504
|
+
line: lineNumber,
|
|
6505
|
+
column: 1
|
|
6506
|
+
});
|
|
6620
6507
|
return {
|
|
6621
6508
|
text: underlineText,
|
|
6622
|
-
range: [
|
|
6623
|
-
loc: underlineLoc,
|
|
6509
|
+
range: [lineStartIndex + prefix.length + spaceBefore.length, lineStartIndex + lineText.length - spaceAfter.length],
|
|
6624
6510
|
marker,
|
|
6625
6511
|
raws: {
|
|
6626
6512
|
prefix,
|
|
@@ -6682,8 +6568,14 @@ var level1_heading_style_default = createRule("level1-heading-style", {
|
|
|
6682
6568
|
*fix(fixer) {
|
|
6683
6569
|
const heading = parsed.contentLines[0];
|
|
6684
6570
|
yield fixer.insertTextBeforeRange(heading.range, "# ");
|
|
6685
|
-
const
|
|
6686
|
-
yield fixer.removeRange(
|
|
6571
|
+
const underlineLineNumber = sourceCode.getLocFromIndex(parsed.underline.range[0]).line;
|
|
6572
|
+
yield fixer.removeRange([sourceCode.getIndexFromLoc({
|
|
6573
|
+
line: underlineLineNumber,
|
|
6574
|
+
column: 1
|
|
6575
|
+
}), sourceCode.lines.length > underlineLineNumber ? sourceCode.getIndexFromLoc({
|
|
6576
|
+
line: underlineLineNumber + 1,
|
|
6577
|
+
column: 1
|
|
6578
|
+
}) : sourceCode.text.length]);
|
|
6687
6579
|
}
|
|
6688
6580
|
});
|
|
6689
6581
|
} else if (style === "setext") {
|
|
@@ -6696,9 +6588,9 @@ var level1_heading_style_default = createRule("level1-heading-style", {
|
|
|
6696
6588
|
if (!parsed) return;
|
|
6697
6589
|
yield fixer.removeRange([parsed.openingSequence.range[0], parsed.content.range[0]]);
|
|
6698
6590
|
if (parsed.closingSequence) yield fixer.removeRange([parsed.content.range[1], parsed.after?.range[1] ?? parsed.closingSequence.range[1]]);
|
|
6699
|
-
const lines = getParsedLines(sourceCode);
|
|
6700
6591
|
const underline = "=".repeat(Math.max(getTextWidth(parsed.content.text), 3));
|
|
6701
|
-
const
|
|
6592
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
6593
|
+
const appendingText = `\n${sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1)}${underline}`;
|
|
6702
6594
|
yield fixer.insertTextAfter(node, appendingText);
|
|
6703
6595
|
}
|
|
6704
6596
|
});
|
|
@@ -6759,8 +6651,14 @@ var level2_heading_style_default = createRule("level2-heading-style", {
|
|
|
6759
6651
|
*fix(fixer) {
|
|
6760
6652
|
const heading = parsed.contentLines[0];
|
|
6761
6653
|
yield fixer.insertTextBeforeRange(heading.range, "## ");
|
|
6762
|
-
const
|
|
6763
|
-
yield fixer.removeRange(
|
|
6654
|
+
const underlineLineNumber = sourceCode.getLocFromIndex(parsed.underline.range[0]).line;
|
|
6655
|
+
yield fixer.removeRange([sourceCode.getIndexFromLoc({
|
|
6656
|
+
line: underlineLineNumber,
|
|
6657
|
+
column: 1
|
|
6658
|
+
}), sourceCode.lines.length > underlineLineNumber ? sourceCode.getIndexFromLoc({
|
|
6659
|
+
line: underlineLineNumber + 1,
|
|
6660
|
+
column: 1
|
|
6661
|
+
}) : sourceCode.text.length]);
|
|
6764
6662
|
}
|
|
6765
6663
|
});
|
|
6766
6664
|
} else if (style === "setext") {
|
|
@@ -6773,9 +6671,9 @@ var level2_heading_style_default = createRule("level2-heading-style", {
|
|
|
6773
6671
|
if (!parsed) return;
|
|
6774
6672
|
yield fixer.removeRange([parsed.openingSequence.range[0], parsed.content.range[0]]);
|
|
6775
6673
|
if (parsed.closingSequence) yield fixer.removeRange([parsed.content.range[1], parsed.after?.range[1] ?? parsed.closingSequence.range[1]]);
|
|
6776
|
-
const lines = getParsedLines(sourceCode);
|
|
6777
6674
|
const underline = "-".repeat(Math.max(getTextWidth(parsed.content.text), 3));
|
|
6778
|
-
const
|
|
6675
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
6676
|
+
const appendingText = `\n${sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1)}${underline}`;
|
|
6779
6677
|
yield fixer.insertTextAfter(node, appendingText);
|
|
6780
6678
|
}
|
|
6781
6679
|
});
|
|
@@ -6837,8 +6735,7 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6837
6735
|
function verifyNewlineAroundBrackets(node, bracketsRange) {
|
|
6838
6736
|
const newline = optionProvider(bracketsRange);
|
|
6839
6737
|
const openingBracketIndex = bracketsRange[0];
|
|
6840
|
-
|
|
6841
|
-
verifyNewlineAfterOpeningBracket(node, spaceAfterOpeningBracket, openingBracketIndex, newline);
|
|
6738
|
+
verifyNewlineAfterOpeningBracket(node, getSpaceAfterOpeningBracket(openingBracketIndex), openingBracketIndex, newline);
|
|
6842
6739
|
const closingBracketIndex = bracketsRange[1] - 1;
|
|
6843
6740
|
const newlineOptionBeforeClosingBracket = newline === "consistent" ? getSpaceAfterOpeningBracket(bracketsRange[0]).includes("\n") ? "always" : "never" : newline;
|
|
6844
6741
|
verifyNewlineBeforeClosingBracket(node, getSpaceBeforeClosingBracket(closingBracketIndex), openingBracketIndex, closingBracketIndex, newlineOptionBeforeClosingBracket);
|
|
@@ -6849,7 +6746,10 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6849
6746
|
function verifyNewlineAfterOpeningBracket(node, spaceAfterOpeningBracket, openingBracketIndex, newline) {
|
|
6850
6747
|
if (newline === "always") {
|
|
6851
6748
|
if (spaceAfterOpeningBracket.includes("\n")) return;
|
|
6852
|
-
const loc =
|
|
6749
|
+
const loc = {
|
|
6750
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex),
|
|
6751
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1)
|
|
6752
|
+
};
|
|
6853
6753
|
context.report({
|
|
6854
6754
|
node,
|
|
6855
6755
|
loc,
|
|
@@ -6860,7 +6760,10 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6860
6760
|
if (!spaceAfterOpeningBracket.includes("\n")) return;
|
|
6861
6761
|
context.report({
|
|
6862
6762
|
node,
|
|
6863
|
-
loc:
|
|
6763
|
+
loc: {
|
|
6764
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex + 1),
|
|
6765
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1 + spaceAfterOpeningBracket.length)
|
|
6766
|
+
},
|
|
6864
6767
|
messageId: "unexpectedNewlineAfterOpeningBracket",
|
|
6865
6768
|
fix: (fixer) => fixer.replaceTextRange([openingBracketIndex + 1, openingBracketIndex + 1 + spaceAfterOpeningBracket.length], " ")
|
|
6866
6769
|
});
|
|
@@ -6875,18 +6778,24 @@ var link_bracket_newline_default = createRule("link-bracket-newline", {
|
|
|
6875
6778
|
if (spaceBeforeClosingBracket.includes("\n")) return;
|
|
6876
6779
|
context.report({
|
|
6877
6780
|
node,
|
|
6878
|
-
loc:
|
|
6781
|
+
loc: {
|
|
6782
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex),
|
|
6783
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex + 1)
|
|
6784
|
+
},
|
|
6879
6785
|
messageId: "expectedNewlineBeforeClosingBracket",
|
|
6880
6786
|
fix: (fixer) => {
|
|
6881
|
-
const
|
|
6882
|
-
return fixer.insertTextBeforeRange([closingBracketIndex, closingBracketIndex + 1], `\n${" ".repeat(
|
|
6787
|
+
const openingBracketStartLoc = sourceCode.getLocFromIndex(openingBracketIndex);
|
|
6788
|
+
return fixer.insertTextBeforeRange([closingBracketIndex, closingBracketIndex + 1], `\n${" ".repeat(openingBracketStartLoc.column)}`);
|
|
6883
6789
|
}
|
|
6884
6790
|
});
|
|
6885
6791
|
} else if (newline === "never") {
|
|
6886
6792
|
if (!spaceBeforeClosingBracket.includes("\n")) return;
|
|
6887
6793
|
context.report({
|
|
6888
6794
|
node,
|
|
6889
|
-
loc:
|
|
6795
|
+
loc: {
|
|
6796
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex - spaceBeforeClosingBracket.length),
|
|
6797
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex)
|
|
6798
|
+
},
|
|
6890
6799
|
messageId: "unexpectedNewlineBeforeClosingBracket",
|
|
6891
6800
|
fix: (fixer) => fixer.replaceTextRange([closingBracketIndex - spaceBeforeClosingBracket.length, closingBracketIndex], " ")
|
|
6892
6801
|
});
|
|
@@ -7013,7 +6922,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7013
6922
|
if (space.length > 0) return;
|
|
7014
6923
|
context.report({
|
|
7015
6924
|
node,
|
|
7016
|
-
loc:
|
|
6925
|
+
loc: {
|
|
6926
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex),
|
|
6927
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1)
|
|
6928
|
+
},
|
|
7017
6929
|
messageId: "expectedSpaceAfterOpeningBracket",
|
|
7018
6930
|
fix: (fixer) => fixer.insertTextAfterRange([openingBracketIndex, openingBracketIndex + 1], " ")
|
|
7019
6931
|
});
|
|
@@ -7021,7 +6933,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7021
6933
|
if (space.length === 0) return;
|
|
7022
6934
|
context.report({
|
|
7023
6935
|
node,
|
|
7024
|
-
loc:
|
|
6936
|
+
loc: {
|
|
6937
|
+
start: sourceCode.getLocFromIndex(openingBracketIndex + 1),
|
|
6938
|
+
end: sourceCode.getLocFromIndex(openingBracketIndex + 1 + space.length)
|
|
6939
|
+
},
|
|
7025
6940
|
messageId: "unexpectedSpaceAfterOpeningBracket",
|
|
7026
6941
|
fix: (fixer) => fixer.removeRange([openingBracketIndex + 1, openingBracketIndex + 1 + space.length])
|
|
7027
6942
|
});
|
|
@@ -7038,7 +6953,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7038
6953
|
if (space.length > 0) return;
|
|
7039
6954
|
context.report({
|
|
7040
6955
|
node,
|
|
7041
|
-
loc:
|
|
6956
|
+
loc: {
|
|
6957
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex),
|
|
6958
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex + 1)
|
|
6959
|
+
},
|
|
7042
6960
|
messageId: "expectedSpaceBeforeClosingBracket",
|
|
7043
6961
|
fix: (fixer) => fixer.insertTextBeforeRange([closingBracketIndex, closingBracketIndex + 1], " ")
|
|
7044
6962
|
});
|
|
@@ -7046,7 +6964,10 @@ var link_bracket_spacing_default = createRule("link-bracket-spacing", {
|
|
|
7046
6964
|
if (space.length === 0) return;
|
|
7047
6965
|
context.report({
|
|
7048
6966
|
node,
|
|
7049
|
-
loc:
|
|
6967
|
+
loc: {
|
|
6968
|
+
start: sourceCode.getLocFromIndex(closingBracketIndex - space.length),
|
|
6969
|
+
end: sourceCode.getLocFromIndex(closingBracketIndex)
|
|
6970
|
+
},
|
|
7050
6971
|
messageId: "unexpectedSpaceBeforeClosingBracket",
|
|
7051
6972
|
fix: (fixer) => fixer.removeRange([closingBracketIndex - space.length, closingBracketIndex])
|
|
7052
6973
|
});
|
|
@@ -7180,7 +7101,10 @@ var link_destination_style_default = createRule("link-destination-style", {
|
|
|
7180
7101
|
}
|
|
7181
7102
|
context.report({
|
|
7182
7103
|
node,
|
|
7183
|
-
loc:
|
|
7104
|
+
loc: {
|
|
7105
|
+
start: sourceCode.getLocFromIndex(destination.range[0]),
|
|
7106
|
+
end: sourceCode.getLocFromIndex(destination.range[1])
|
|
7107
|
+
},
|
|
7184
7108
|
messageId: preferStyle.messageId,
|
|
7185
7109
|
*fix(fixer) {
|
|
7186
7110
|
if (destination.type === "bare" && preferStyle.typeName === "pointy-bracketed") {
|
|
@@ -7314,8 +7238,7 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7314
7238
|
*/
|
|
7315
7239
|
function verifyNewlineAroundParens(node, openingParenIndex, closingParenIndex) {
|
|
7316
7240
|
const newline = optionProvider(openingParenIndex, closingParenIndex);
|
|
7317
|
-
|
|
7318
|
-
verifyNewlineAfterOpeningParen(node, spaceAfterOpeningParen, openingParenIndex, newline);
|
|
7241
|
+
verifyNewlineAfterOpeningParen(node, getSpaceAfterOpeningParen(openingParenIndex), openingParenIndex, newline);
|
|
7319
7242
|
const newlineOptionBeforeClosingParen = newline === "consistent" ? getSpaceAfterOpeningParen(openingParenIndex).includes("\n") ? "always" : "never" : newline;
|
|
7320
7243
|
verifyNewlineBeforeClosingParen(node, getSpaceBeforeClosingParen(closingParenIndex), openingParenIndex, closingParenIndex, newlineOptionBeforeClosingParen);
|
|
7321
7244
|
}
|
|
@@ -7325,7 +7248,10 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7325
7248
|
function verifyNewlineAfterOpeningParen(node, spaceAfterOpeningParen, openingParenIndex, newline) {
|
|
7326
7249
|
if (newline === "always") {
|
|
7327
7250
|
if (spaceAfterOpeningParen.includes("\n")) return;
|
|
7328
|
-
const loc =
|
|
7251
|
+
const loc = {
|
|
7252
|
+
start: sourceCode.getLocFromIndex(openingParenIndex),
|
|
7253
|
+
end: sourceCode.getLocFromIndex(openingParenIndex + 1)
|
|
7254
|
+
};
|
|
7329
7255
|
context.report({
|
|
7330
7256
|
node,
|
|
7331
7257
|
loc,
|
|
@@ -7336,7 +7262,10 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7336
7262
|
if (!spaceAfterOpeningParen.includes("\n")) return;
|
|
7337
7263
|
context.report({
|
|
7338
7264
|
node,
|
|
7339
|
-
loc:
|
|
7265
|
+
loc: {
|
|
7266
|
+
start: sourceCode.getLocFromIndex(openingParenIndex + 1),
|
|
7267
|
+
end: sourceCode.getLocFromIndex(openingParenIndex + 1 + spaceAfterOpeningParen.length)
|
|
7268
|
+
},
|
|
7340
7269
|
messageId: "unexpectedNewlineAfterOpeningParen",
|
|
7341
7270
|
fix: (fixer) => fixer.replaceTextRange([openingParenIndex + 1, openingParenIndex + 1 + spaceAfterOpeningParen.length], " ")
|
|
7342
7271
|
});
|
|
@@ -7351,18 +7280,24 @@ var link_paren_newline_default = createRule("link-paren-newline", {
|
|
|
7351
7280
|
if (spaceBeforeClosingParen.includes("\n")) return;
|
|
7352
7281
|
context.report({
|
|
7353
7282
|
node,
|
|
7354
|
-
loc:
|
|
7283
|
+
loc: {
|
|
7284
|
+
start: sourceCode.getLocFromIndex(closingParenIndex),
|
|
7285
|
+
end: sourceCode.getLocFromIndex(closingParenIndex + 1)
|
|
7286
|
+
},
|
|
7355
7287
|
messageId: "expectedNewlineBeforeClosingParen",
|
|
7356
7288
|
fix: (fixer) => {
|
|
7357
|
-
const
|
|
7358
|
-
return fixer.insertTextBeforeRange([closingParenIndex, closingParenIndex + 1], `\n${" ".repeat(
|
|
7289
|
+
const openingParenStartLoc = sourceCode.getLocFromIndex(openingParenIndex);
|
|
7290
|
+
return fixer.insertTextBeforeRange([closingParenIndex, closingParenIndex + 1], `\n${" ".repeat(openingParenStartLoc.column)}`);
|
|
7359
7291
|
}
|
|
7360
7292
|
});
|
|
7361
7293
|
} else if (newline === "never") {
|
|
7362
7294
|
if (!spaceBeforeClosingParen.includes("\n")) return;
|
|
7363
7295
|
context.report({
|
|
7364
7296
|
node,
|
|
7365
|
-
loc:
|
|
7297
|
+
loc: {
|
|
7298
|
+
start: sourceCode.getLocFromIndex(closingParenIndex - spaceBeforeClosingParen.length),
|
|
7299
|
+
end: sourceCode.getLocFromIndex(closingParenIndex)
|
|
7300
|
+
},
|
|
7366
7301
|
messageId: "unexpectedNewlineBeforeClosingParen",
|
|
7367
7302
|
fix: (fixer) => fixer.replaceTextRange([closingParenIndex - spaceBeforeClosingParen.length, closingParenIndex], " ")
|
|
7368
7303
|
});
|
|
@@ -7443,7 +7378,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7443
7378
|
if (space.length > 0) return;
|
|
7444
7379
|
context.report({
|
|
7445
7380
|
node,
|
|
7446
|
-
loc:
|
|
7381
|
+
loc: {
|
|
7382
|
+
start: sourceCode.getLocFromIndex(openingParen.range[0]),
|
|
7383
|
+
end: sourceCode.getLocFromIndex(openingParen.range[1])
|
|
7384
|
+
},
|
|
7447
7385
|
messageId: "expectedSpaceAfterOpeningParen",
|
|
7448
7386
|
fix: (fixer) => fixer.insertTextAfterRange(openingParen.range, " ")
|
|
7449
7387
|
});
|
|
@@ -7451,7 +7389,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7451
7389
|
if (space.length === 0) return;
|
|
7452
7390
|
context.report({
|
|
7453
7391
|
node,
|
|
7454
|
-
loc:
|
|
7392
|
+
loc: {
|
|
7393
|
+
start: sourceCode.getLocFromIndex(openingParen.range[1]),
|
|
7394
|
+
end: sourceCode.getLocFromIndex(openingParen.range[1] + space.length)
|
|
7395
|
+
},
|
|
7455
7396
|
messageId: "unexpectedSpaceAfterOpeningParen",
|
|
7456
7397
|
fix: (fixer) => fixer.removeRange([openingParen.range[1], openingParen.range[1] + space.length])
|
|
7457
7398
|
});
|
|
@@ -7467,7 +7408,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7467
7408
|
if (space.length > 0) return;
|
|
7468
7409
|
context.report({
|
|
7469
7410
|
node,
|
|
7470
|
-
loc:
|
|
7411
|
+
loc: {
|
|
7412
|
+
start: sourceCode.getLocFromIndex(closingParen.range[0]),
|
|
7413
|
+
end: sourceCode.getLocFromIndex(closingParen.range[1])
|
|
7414
|
+
},
|
|
7471
7415
|
messageId: "expectedSpaceBeforeClosingParen",
|
|
7472
7416
|
fix: (fixer) => fixer.insertTextBeforeRange(closingParen.range, " ")
|
|
7473
7417
|
});
|
|
@@ -7475,7 +7419,10 @@ var link_paren_spacing_default = createRule("link-paren-spacing", {
|
|
|
7475
7419
|
if (space.length === 0) return;
|
|
7476
7420
|
context.report({
|
|
7477
7421
|
node,
|
|
7478
|
-
loc:
|
|
7422
|
+
loc: {
|
|
7423
|
+
start: sourceCode.getLocFromIndex(closingParen.range[0] - space.length),
|
|
7424
|
+
end: sourceCode.getLocFromIndex(closingParen.range[0])
|
|
7425
|
+
},
|
|
7479
7426
|
messageId: "unexpectedSpaceBeforeClosingParen",
|
|
7480
7427
|
fix: (fixer) => fixer.removeRange([closingParen.range[0] - space.length, closingParen.range[0]])
|
|
7481
7428
|
});
|
|
@@ -7585,7 +7532,10 @@ var link_title_style_default = createRule("link-title-style", {
|
|
|
7585
7532
|
}
|
|
7586
7533
|
context.report({
|
|
7587
7534
|
node,
|
|
7588
|
-
loc:
|
|
7535
|
+
loc: {
|
|
7536
|
+
start: sourceCode.getLocFromIndex(title.range[0]),
|
|
7537
|
+
end: sourceCode.getLocFromIndex(title.range[1])
|
|
7538
|
+
},
|
|
7589
7539
|
messageId: preferStyle.messageId,
|
|
7590
7540
|
*fix(fixer) {
|
|
7591
7541
|
yield fixer.replaceTextRange([title.range[0], title.range[0] + 1], preferStyle.open);
|
|
@@ -7696,13 +7646,15 @@ var list_marker_alignment_default = createRule("list-marker-alignment", {
|
|
|
7696
7646
|
messageId: "incorrectAlignment",
|
|
7697
7647
|
data: messageData,
|
|
7698
7648
|
fix(fixer) {
|
|
7699
|
-
const lines = getParsedLines(sourceCode);
|
|
7700
|
-
const line = lines.get(markerLocation.line);
|
|
7701
7649
|
if (diff < 0) {
|
|
7702
7650
|
const addSpaces = " ".repeat(-diff);
|
|
7703
|
-
|
|
7651
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7652
|
+
line: markerLocation.line,
|
|
7653
|
+
column: 1
|
|
7654
|
+
});
|
|
7655
|
+
return fixer.insertTextBeforeRange([lineStartIndex + markerLocation.start, lineStartIndex + markerLocation.start], addSpaces);
|
|
7704
7656
|
}
|
|
7705
|
-
const beforeItemMarker = line.
|
|
7657
|
+
const beforeItemMarker = sourceCode.lines[markerLocation.line - 1].slice(0, markerLocation.start);
|
|
7706
7658
|
const newWidth = getWidth(beforeItemMarker) - diff;
|
|
7707
7659
|
let newBeforeItemMarker = beforeItemMarker;
|
|
7708
7660
|
while (getWidth(newBeforeItemMarker) > newWidth) {
|
|
@@ -7711,8 +7663,14 @@ var list_marker_alignment_default = createRule("list-marker-alignment", {
|
|
|
7711
7663
|
else return null;
|
|
7712
7664
|
}
|
|
7713
7665
|
if (getWidth(newBeforeItemMarker) < newWidth) newBeforeItemMarker += " ".repeat(newWidth - getWidth(newBeforeItemMarker));
|
|
7714
|
-
const referenceBeforeItemMarker = lines
|
|
7715
|
-
if (!referenceBeforeItemMarker.includes(">") || referenceBeforeItemMarker === newBeforeItemMarker)
|
|
7666
|
+
const referenceBeforeItemMarker = sourceCode.lines[referenceMarkerLocation.line - 1].slice(0, referenceMarkerLocation.start);
|
|
7667
|
+
if (!referenceBeforeItemMarker.includes(">") || referenceBeforeItemMarker === newBeforeItemMarker) {
|
|
7668
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7669
|
+
line: markerLocation.line,
|
|
7670
|
+
column: 1
|
|
7671
|
+
});
|
|
7672
|
+
return fixer.replaceTextRange([lineStartIndex, lineStartIndex + markerLocation.start], newBeforeItemMarker);
|
|
7673
|
+
}
|
|
7716
7674
|
return null;
|
|
7717
7675
|
}
|
|
7718
7676
|
});
|
|
@@ -7750,11 +7708,14 @@ var no_implicit_block_closing_default = createRule("no-implicit-block-closing",
|
|
|
7750
7708
|
if (parsed.closingFence) return;
|
|
7751
7709
|
context.report({
|
|
7752
7710
|
node,
|
|
7753
|
-
loc:
|
|
7711
|
+
loc: {
|
|
7712
|
+
start: sourceCode.getLocFromIndex(parsed.openingFence.range[0]),
|
|
7713
|
+
end: sourceCode.getLocFromIndex(parsed.openingFence.range[1])
|
|
7714
|
+
},
|
|
7754
7715
|
messageId: "missingClosingFence",
|
|
7755
7716
|
fix(fixer) {
|
|
7756
|
-
const
|
|
7757
|
-
const prefix = sourceCode.lines[
|
|
7717
|
+
const openingFenceStartLoc = sourceCode.getLocFromIndex(parsed.openingFence.range[0]);
|
|
7718
|
+
const prefix = sourceCode.lines[openingFenceStartLoc.line - 1].slice(0, openingFenceStartLoc.column - 1).replace(/[^\s>]/gu, " ");
|
|
7758
7719
|
const closingFence = parsed.openingFence.text;
|
|
7759
7720
|
return fixer.insertTextAfter(node, `\n${prefix}${closingFence}`);
|
|
7760
7721
|
}
|
|
@@ -7766,11 +7727,14 @@ var no_implicit_block_closing_default = createRule("no-implicit-block-closing",
|
|
|
7766
7727
|
if (parsed.closingSequence) return;
|
|
7767
7728
|
context.report({
|
|
7768
7729
|
node,
|
|
7769
|
-
loc:
|
|
7730
|
+
loc: {
|
|
7731
|
+
start: sourceCode.getLocFromIndex(parsed.openingSequence.range[0]),
|
|
7732
|
+
end: sourceCode.getLocFromIndex(parsed.openingSequence.range[1])
|
|
7733
|
+
},
|
|
7770
7734
|
messageId: "missingClosingMath",
|
|
7771
7735
|
fix(fixer) {
|
|
7772
|
-
const
|
|
7773
|
-
const prefix = sourceCode.lines[
|
|
7736
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
7737
|
+
const prefix = sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1).replace(/[^\s>]/gu, " ");
|
|
7774
7738
|
const closingSequence = parsed.openingSequence.text;
|
|
7775
7739
|
return fixer.insertTextAfter(node, `\n${prefix}${closingSequence}`);
|
|
7776
7740
|
}
|
|
@@ -7782,12 +7746,15 @@ var no_implicit_block_closing_default = createRule("no-implicit-block-closing",
|
|
|
7782
7746
|
if (parsed.closingSequence) return;
|
|
7783
7747
|
context.report({
|
|
7784
7748
|
node,
|
|
7785
|
-
loc:
|
|
7749
|
+
loc: {
|
|
7750
|
+
start: sourceCode.getLocFromIndex(parsed.openingSequence.range[0]),
|
|
7751
|
+
end: sourceCode.getLocFromIndex(parsed.openingSequence.range[1])
|
|
7752
|
+
},
|
|
7786
7753
|
messageId: "missingClosingContainer",
|
|
7787
7754
|
fix(fixer) {
|
|
7788
7755
|
if (withinSameLengthOpeningCustomContainer(sourceCode, node, parsed.openingSequence.text.length)) return null;
|
|
7789
|
-
const
|
|
7790
|
-
const prefix = sourceCode.lines[
|
|
7756
|
+
const openingSequenceStartLoc = sourceCode.getLocFromIndex(parsed.openingSequence.range[0]);
|
|
7757
|
+
const prefix = sourceCode.lines[openingSequenceStartLoc.line - 1].slice(0, openingSequenceStartLoc.column - 1).replace(/[^\s>]/gu, " ");
|
|
7791
7758
|
const closingSequence = parsed.openingSequence.text;
|
|
7792
7759
|
return fixer.insertTextAfter(node, `\n${prefix}${closingSequence}`);
|
|
7793
7760
|
}
|
|
@@ -7859,7 +7826,6 @@ var no_laziness_blockquotes_default = createRule("no-laziness-blockquotes", {
|
|
|
7859
7826
|
for (const group of invalidGroups) {
|
|
7860
7827
|
const first = group.lines[0];
|
|
7861
7828
|
const last = group.lines.at(-1);
|
|
7862
|
-
const lines = getParsedLines(sourceCode);
|
|
7863
7829
|
context.report({
|
|
7864
7830
|
loc: {
|
|
7865
7831
|
start: {
|
|
@@ -7868,7 +7834,7 @@ var no_laziness_blockquotes_default = createRule("no-laziness-blockquotes", {
|
|
|
7868
7834
|
},
|
|
7869
7835
|
end: {
|
|
7870
7836
|
line: last.line,
|
|
7871
|
-
column: lines
|
|
7837
|
+
column: sourceCode.lines[last.line - 1].length + 1
|
|
7872
7838
|
}
|
|
7873
7839
|
},
|
|
7874
7840
|
messageId: "lazyBlockquoteLine",
|
|
@@ -7881,15 +7847,21 @@ var no_laziness_blockquotes_default = createRule("no-laziness-blockquotes", {
|
|
|
7881
7847
|
data: { missingMarkers: `${base.level - group.level}` },
|
|
7882
7848
|
*fix(fixer) {
|
|
7883
7849
|
for (const invalidLine of group.lines) {
|
|
7884
|
-
const
|
|
7885
|
-
|
|
7850
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7851
|
+
line: invalidLine.line,
|
|
7852
|
+
column: 1
|
|
7853
|
+
});
|
|
7854
|
+
yield fixer.replaceTextRange([lineStartIndex, lineStartIndex + invalidLine.prefix.length], base.prefix);
|
|
7886
7855
|
}
|
|
7887
7856
|
}
|
|
7888
7857
|
}, {
|
|
7889
7858
|
messageId: "addLineBreak",
|
|
7890
7859
|
fix: (fixer) => {
|
|
7891
|
-
const
|
|
7892
|
-
|
|
7860
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
7861
|
+
line: first.line,
|
|
7862
|
+
column: 1
|
|
7863
|
+
});
|
|
7864
|
+
return fixer.insertTextBeforeRange([lineStartIndex, lineStartIndex], `${first.prefix.trimEnd()}\n`);
|
|
7893
7865
|
}
|
|
7894
7866
|
}]
|
|
7895
7867
|
});
|
|
@@ -7950,8 +7922,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7950
7922
|
const headerRow = node.children[0];
|
|
7951
7923
|
const headerRange = sourceCode.getRange(headerRow);
|
|
7952
7924
|
const delimiterEndIndex = node.children.length > 1 ? sourceCode.getRange(node.children[1])[0] : sourceCode.getRange(node)[1];
|
|
7953
|
-
const
|
|
7954
|
-
const parsed = parseTableDelimiterRowFromText(delimiterText);
|
|
7925
|
+
const parsed = parseTableDelimiterRowFromText(sourceCode.text.slice(headerRange[1], delimiterEndIndex));
|
|
7955
7926
|
if (!parsed) return null;
|
|
7956
7927
|
const delimiters = parsed.delimiters.map((d) => {
|
|
7957
7928
|
let leadingPipe = null;
|
|
@@ -7959,8 +7930,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7959
7930
|
const leadingPipeRange = [headerRange[1] + d.leadingPipe.range[0], headerRange[1] + d.leadingPipe.range[1]];
|
|
7960
7931
|
leadingPipe = {
|
|
7961
7932
|
text: d.leadingPipe.text,
|
|
7962
|
-
range: leadingPipeRange
|
|
7963
|
-
loc: getSourceLocationFromRange(sourceCode, headerRow, leadingPipeRange)
|
|
7933
|
+
range: leadingPipeRange
|
|
7964
7934
|
};
|
|
7965
7935
|
}
|
|
7966
7936
|
const delimiterRange = [headerRange[1] + d.delimiter.range[0], headerRange[1] + d.delimiter.range[1]];
|
|
@@ -7969,8 +7939,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7969
7939
|
delimiter: {
|
|
7970
7940
|
text: d.delimiter.text,
|
|
7971
7941
|
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)
|
|
7942
|
+
range: delimiterRange
|
|
7974
7943
|
}
|
|
7975
7944
|
};
|
|
7976
7945
|
});
|
|
@@ -7979,8 +7948,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7979
7948
|
const trailingPipeRange = [headerRange[1] + parsed.trailingPipe.range[0], headerRange[1] + parsed.trailingPipe.range[1]];
|
|
7980
7949
|
trailingPipe = {
|
|
7981
7950
|
text: parsed.trailingPipe.text,
|
|
7982
|
-
range: trailingPipeRange
|
|
7983
|
-
loc: getSourceLocationFromRange(sourceCode, headerRow, trailingPipeRange)
|
|
7951
|
+
range: trailingPipeRange
|
|
7984
7952
|
};
|
|
7985
7953
|
}
|
|
7986
7954
|
const firstToken = delimiters[0].leadingPipe ?? delimiters[0].delimiter;
|
|
@@ -7988,11 +7956,7 @@ function parseTableDelimiterRow(sourceCode, node) {
|
|
|
7988
7956
|
return {
|
|
7989
7957
|
delimiters,
|
|
7990
7958
|
trailingPipe,
|
|
7991
|
-
range: [firstToken.range[0], lastToken.range[1]]
|
|
7992
|
-
loc: {
|
|
7993
|
-
start: firstToken.loc.start,
|
|
7994
|
-
end: lastToken.loc.end
|
|
7995
|
-
}
|
|
7959
|
+
range: [firstToken.range[0], lastToken.range[1]]
|
|
7996
7960
|
};
|
|
7997
7961
|
}
|
|
7998
7962
|
/**
|
|
@@ -8020,13 +7984,7 @@ function parseTableRow(sourceCode, node) {
|
|
|
8020
7984
|
if (cell.children.length > 0) {
|
|
8021
7985
|
const firstChild = cell.children[0];
|
|
8022
7986
|
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
|
-
};
|
|
7987
|
+
parsedCell = { range: [sourceCode.getRange(firstChild)[0], sourceCode.getRange(lastChild)[1]] };
|
|
8030
7988
|
}
|
|
8031
7989
|
cells.push({
|
|
8032
7990
|
leadingPipe,
|
|
@@ -8034,14 +7992,7 @@ function parseTableRow(sourceCode, node) {
|
|
|
8034
7992
|
});
|
|
8035
7993
|
trailingPipe = sourceCode.text[cellRange[1] - 1] === "|" ? {
|
|
8036
7994
|
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
|
-
}
|
|
7995
|
+
range: [cellRange[1] - 1, cellRange[1]]
|
|
8045
7996
|
} : null;
|
|
8046
7997
|
}
|
|
8047
7998
|
const firstToken = cells[0].leadingPipe ?? cells[0].cell;
|
|
@@ -8049,11 +8000,7 @@ function parseTableRow(sourceCode, node) {
|
|
|
8049
8000
|
return {
|
|
8050
8001
|
cells,
|
|
8051
8002
|
trailingPipe,
|
|
8052
|
-
range: [firstToken.range[0], lastToken.range[1]]
|
|
8053
|
-
loc: {
|
|
8054
|
-
start: firstToken.loc.start,
|
|
8055
|
-
end: lastToken.loc.end
|
|
8056
|
-
}
|
|
8003
|
+
range: [firstToken.range[0], lastToken.range[1]]
|
|
8057
8004
|
};
|
|
8058
8005
|
}
|
|
8059
8006
|
/**
|
|
@@ -8262,8 +8209,7 @@ var no_multi_spaces_default = createRule("no-multi-spaces", {
|
|
|
8262
8209
|
* Verify spaces in a node
|
|
8263
8210
|
*/
|
|
8264
8211
|
function verifyTextInNode(node) {
|
|
8265
|
-
|
|
8266
|
-
verifyTextInRange(node, nodeRange);
|
|
8212
|
+
verifyTextInRange(node, sourceCode.getRange(node));
|
|
8267
8213
|
}
|
|
8268
8214
|
/**
|
|
8269
8215
|
* Process a blockquote node
|
|
@@ -8316,8 +8262,7 @@ var no_multi_spaces_default = createRule("no-multi-spaces", {
|
|
|
8316
8262
|
}
|
|
8317
8263
|
if (spaces.length < 2) continue;
|
|
8318
8264
|
const start = textRange[0] + match.index;
|
|
8319
|
-
const
|
|
8320
|
-
const range = [start, end];
|
|
8265
|
+
const range = [start, start + spaces.length];
|
|
8321
8266
|
if (nodeRange[0] === range[0]) {
|
|
8322
8267
|
let isIndentation = true;
|
|
8323
8268
|
for (let index = nodeRange[0] - 1; index >= 0; index--) {
|
|
@@ -8343,7 +8288,10 @@ var no_multi_spaces_default = createRule("no-multi-spaces", {
|
|
|
8343
8288
|
context.report({
|
|
8344
8289
|
node,
|
|
8345
8290
|
messageId: "multipleSpaces",
|
|
8346
|
-
loc:
|
|
8291
|
+
loc: {
|
|
8292
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
8293
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
8294
|
+
},
|
|
8347
8295
|
fix(fixer) {
|
|
8348
8296
|
return fixer.replaceTextRange(range, " ");
|
|
8349
8297
|
}
|
|
@@ -8417,7 +8365,11 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8417
8365
|
toml: addIgnoreLoc,
|
|
8418
8366
|
json: addIgnoreLoc,
|
|
8419
8367
|
"root:exit"() {
|
|
8420
|
-
const lines =
|
|
8368
|
+
const lines = sourceCode.lines.map((text, index) => ({
|
|
8369
|
+
line: index + 1,
|
|
8370
|
+
text
|
|
8371
|
+
}));
|
|
8372
|
+
if (lines.at(-1)?.text === "") lines.pop();
|
|
8421
8373
|
const bofEmptyLines = [];
|
|
8422
8374
|
while (lines.length) {
|
|
8423
8375
|
if (lines[0].text.trim()) break;
|
|
@@ -8441,7 +8393,7 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8441
8393
|
messageId: "blankBeginningOfFile",
|
|
8442
8394
|
data: { max: maxBOF },
|
|
8443
8395
|
fix(fixer) {
|
|
8444
|
-
return fixer.removeRange(
|
|
8396
|
+
return fixer.removeRange(getRangeFromLines(first.line, last.line));
|
|
8445
8397
|
}
|
|
8446
8398
|
});
|
|
8447
8399
|
}
|
|
@@ -8468,7 +8420,7 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8468
8420
|
messageId: "blankEndOfFile",
|
|
8469
8421
|
data: { max: maxEOF },
|
|
8470
8422
|
fix(fixer) {
|
|
8471
|
-
return fixer.removeRange(
|
|
8423
|
+
return fixer.removeRange(getRangeFromLines(first.line, last.line));
|
|
8472
8424
|
}
|
|
8473
8425
|
});
|
|
8474
8426
|
}
|
|
@@ -8502,13 +8454,25 @@ var no_multiple_empty_lines_default = createRule("no-multiple-empty-lines", {
|
|
|
8502
8454
|
pluralizedLines: max === 1 ? "line" : "lines"
|
|
8503
8455
|
},
|
|
8504
8456
|
fix(fixer) {
|
|
8505
|
-
return fixer.removeRange(
|
|
8457
|
+
return fixer.removeRange(getRangeFromLines(first.line, last.line));
|
|
8506
8458
|
}
|
|
8507
8459
|
});
|
|
8508
8460
|
}
|
|
8509
8461
|
}
|
|
8510
8462
|
}
|
|
8511
8463
|
};
|
|
8464
|
+
/**
|
|
8465
|
+
* Get the range from the given line numbers (1-based)
|
|
8466
|
+
*/
|
|
8467
|
+
function getRangeFromLines(firstLine, lastLine) {
|
|
8468
|
+
return [sourceCode.getIndexFromLoc({
|
|
8469
|
+
line: firstLine,
|
|
8470
|
+
column: 1
|
|
8471
|
+
}), sourceCode.lines.length > lastLine ? sourceCode.getIndexFromLoc({
|
|
8472
|
+
line: lastLine + 1,
|
|
8473
|
+
column: 1
|
|
8474
|
+
}) : sourceCode.text.length];
|
|
8475
|
+
}
|
|
8512
8476
|
}
|
|
8513
8477
|
});
|
|
8514
8478
|
|
|
@@ -8543,7 +8507,10 @@ var no_text_backslash_linebreak_default = createRule("no-text-backslash-linebrea
|
|
|
8543
8507
|
const backslashRange = [range[1] - 1, range[1]];
|
|
8544
8508
|
context.report({
|
|
8545
8509
|
node,
|
|
8546
|
-
loc:
|
|
8510
|
+
loc: {
|
|
8511
|
+
start: sourceCode.getLocFromIndex(backslashRange[0]),
|
|
8512
|
+
end: sourceCode.getLocFromIndex(backslashRange[1])
|
|
8513
|
+
},
|
|
8547
8514
|
messageId: "textBackslashWithLinebreak",
|
|
8548
8515
|
suggest: [{
|
|
8549
8516
|
messageId: "removeBackslash",
|
|
@@ -8642,7 +8609,10 @@ var no_trailing_spaces_default = createRule("no-trailing-spaces", {
|
|
|
8642
8609
|
if (extraSpaces <= 0) return;
|
|
8643
8610
|
context.report({
|
|
8644
8611
|
node,
|
|
8645
|
-
loc:
|
|
8612
|
+
loc: {
|
|
8613
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
8614
|
+
end: sourceCode.getLocFromIndex(range[0] + extraSpaces)
|
|
8615
|
+
},
|
|
8646
8616
|
messageId: "trailingSpace",
|
|
8647
8617
|
fix(fixer) {
|
|
8648
8618
|
return fixer.removeRange([range[0], range[0] + extraSpaces]);
|
|
@@ -8655,28 +8625,28 @@ var no_trailing_spaces_default = createRule("no-trailing-spaces", {
|
|
|
8655
8625
|
"root:exit"() {
|
|
8656
8626
|
const re = /[^\S\n\r]+$/u;
|
|
8657
8627
|
const skipMatch = /^[^\S\n\r]*$/u;
|
|
8658
|
-
const lines = getParsedLines(sourceCode);
|
|
8659
8628
|
const commentLineNumbers = getCommentLineNumbers();
|
|
8660
|
-
for (const
|
|
8661
|
-
const
|
|
8629
|
+
for (const [lineIndex, lineText] of sourceCode.lines.entries()) {
|
|
8630
|
+
const lineNumber = lineIndex + 1;
|
|
8631
|
+
const matches = re.exec(lineText);
|
|
8662
8632
|
if (!matches) continue;
|
|
8663
8633
|
const location = {
|
|
8664
8634
|
start: {
|
|
8665
|
-
line:
|
|
8635
|
+
line: lineNumber,
|
|
8666
8636
|
column: matches.index + 1
|
|
8667
8637
|
},
|
|
8668
8638
|
end: {
|
|
8669
|
-
line:
|
|
8639
|
+
line: lineNumber,
|
|
8670
8640
|
column: matches.index + 1 + matches[0].length
|
|
8671
8641
|
}
|
|
8672
8642
|
};
|
|
8673
|
-
const range = [
|
|
8643
|
+
const range = [sourceCode.getIndexFromLoc(location.start), sourceCode.getIndexFromLoc(location.end)];
|
|
8674
8644
|
if (ignoreNodes.some((node) => {
|
|
8675
8645
|
const nodeRange = sourceCode.getRange(node);
|
|
8676
8646
|
return nodeRange[0] <= range[0] && range[1] <= nodeRange[1];
|
|
8677
8647
|
})) continue;
|
|
8678
|
-
if (skipBlankLines && skipMatch.test(
|
|
8679
|
-
if (!ignoreComments || !commentLineNumbers.has(
|
|
8648
|
+
if (skipBlankLines && skipMatch.test(lineText)) continue;
|
|
8649
|
+
if (!ignoreComments || !commentLineNumbers.has(lineNumber)) report(location, range);
|
|
8680
8650
|
}
|
|
8681
8651
|
}
|
|
8682
8652
|
};
|
|
@@ -9150,15 +9120,18 @@ var padded_custom_containers_default = createRule("padded-custom-containers", {
|
|
|
9150
9120
|
const lastChild = node.children[node.children.length - 1];
|
|
9151
9121
|
const firstChildLoc = sourceCode.getLoc(firstChild);
|
|
9152
9122
|
const lastChildLoc = sourceCode.getLoc(lastChild);
|
|
9153
|
-
const paddingAfterOpeningLines = firstChildLoc.start.line - openingSequence.
|
|
9154
|
-
const paddingBeforeClosingLines = closingSequence ? closingSequence.
|
|
9123
|
+
const paddingAfterOpeningLines = firstChildLoc.start.line - sourceCode.getLocFromIndex(openingSequence.range[1]).line - 1;
|
|
9124
|
+
const paddingBeforeClosingLines = closingSequence ? sourceCode.getLocFromIndex(closingSequence.range[0]).line - lastChildLoc.end.line - 1 : null;
|
|
9155
9125
|
if (padding === "always") {
|
|
9156
9126
|
if (paddingAfterOpeningLines <= 0) {
|
|
9157
9127
|
const reportEndToken = parsed.info ?? openingSequence;
|
|
9158
9128
|
const reportRange = [openingSequence.range[0], reportEndToken.range[1]];
|
|
9159
9129
|
context.report({
|
|
9160
9130
|
messageId: "expectedPaddingAfterOpeningMarker",
|
|
9161
|
-
loc:
|
|
9131
|
+
loc: {
|
|
9132
|
+
start: sourceCode.getLocFromIndex(reportRange[0]),
|
|
9133
|
+
end: sourceCode.getLocFromIndex(reportRange[1])
|
|
9134
|
+
},
|
|
9162
9135
|
fix(fixer) {
|
|
9163
9136
|
return fixer.insertTextAfterRange(reportRange, "\n");
|
|
9164
9137
|
}
|
|
@@ -9166,33 +9139,62 @@ var padded_custom_containers_default = createRule("padded-custom-containers", {
|
|
|
9166
9139
|
}
|
|
9167
9140
|
if (closingSequence && paddingBeforeClosingLines !== null && paddingBeforeClosingLines <= 0) context.report({
|
|
9168
9141
|
messageId: "expectedPaddingBeforeClosingMarker",
|
|
9169
|
-
loc:
|
|
9142
|
+
loc: {
|
|
9143
|
+
start: sourceCode.getLocFromIndex(closingSequence.range[0]),
|
|
9144
|
+
end: sourceCode.getLocFromIndex(closingSequence.range[1])
|
|
9145
|
+
},
|
|
9170
9146
|
fix(fixer) {
|
|
9171
|
-
return fixer.insertTextBeforeRange([closingSequence.range[0] - closingSequence.
|
|
9147
|
+
return fixer.insertTextBeforeRange([closingSequence.range[0] - sourceCode.getLocFromIndex(closingSequence.range[0]).column + 1, closingSequence.range[1]], "\n");
|
|
9172
9148
|
}
|
|
9173
9149
|
});
|
|
9174
9150
|
} else if (padding === "never") {
|
|
9175
9151
|
if (paddingAfterOpeningLines > 0) {
|
|
9176
|
-
const
|
|
9177
|
-
const
|
|
9178
|
-
|
|
9179
|
-
|
|
9152
|
+
const startLineNumber = sourceCode.getLocFromIndex(openingSequence.range[1]).line + 1;
|
|
9153
|
+
const removeRange = [sourceCode.getIndexFromLoc({
|
|
9154
|
+
line: startLineNumber,
|
|
9155
|
+
column: 1
|
|
9156
|
+
}), sourceCode.getIndexFromLoc({
|
|
9157
|
+
line: firstChildLoc.start.line,
|
|
9158
|
+
column: 1
|
|
9159
|
+
})];
|
|
9180
9160
|
context.report({
|
|
9181
9161
|
messageId: "unexpectedPaddingAfterOpeningMarker",
|
|
9182
|
-
loc:
|
|
9162
|
+
loc: {
|
|
9163
|
+
start: {
|
|
9164
|
+
line: startLineNumber,
|
|
9165
|
+
column: 1
|
|
9166
|
+
},
|
|
9167
|
+
end: {
|
|
9168
|
+
line: firstChildLoc.start.line,
|
|
9169
|
+
column: 1
|
|
9170
|
+
}
|
|
9171
|
+
},
|
|
9183
9172
|
fix(fixer) {
|
|
9184
9173
|
return fixer.removeRange(removeRange);
|
|
9185
9174
|
}
|
|
9186
9175
|
});
|
|
9187
9176
|
}
|
|
9188
9177
|
if (closingSequence && paddingBeforeClosingLines !== null && paddingBeforeClosingLines > 0) {
|
|
9189
|
-
const
|
|
9190
|
-
const
|
|
9191
|
-
|
|
9192
|
-
|
|
9178
|
+
const closingSequenceStartLoc = sourceCode.getLocFromIndex(closingSequence.range[0]);
|
|
9179
|
+
const removeRange = [sourceCode.getIndexFromLoc({
|
|
9180
|
+
line: lastChildLoc.end.line + 1,
|
|
9181
|
+
column: 1
|
|
9182
|
+
}), sourceCode.getIndexFromLoc({
|
|
9183
|
+
line: closingSequenceStartLoc.line,
|
|
9184
|
+
column: 1
|
|
9185
|
+
})];
|
|
9193
9186
|
context.report({
|
|
9194
9187
|
messageId: "unexpectedPaddingBeforeClosingMarker",
|
|
9195
|
-
loc:
|
|
9188
|
+
loc: {
|
|
9189
|
+
start: {
|
|
9190
|
+
line: lastChildLoc.end.line + 1,
|
|
9191
|
+
column: 1
|
|
9192
|
+
},
|
|
9193
|
+
end: {
|
|
9194
|
+
line: closingSequenceStartLoc.line,
|
|
9195
|
+
column: 1
|
|
9196
|
+
}
|
|
9197
|
+
},
|
|
9196
9198
|
fix(fixer) {
|
|
9197
9199
|
return fixer.removeRange(removeRange);
|
|
9198
9200
|
}
|
|
@@ -9295,8 +9297,7 @@ const BLOCK_TYPE_MAP = {
|
|
|
9295
9297
|
* Get the block type of a node
|
|
9296
9298
|
*/
|
|
9297
9299
|
function getBlockType(node) {
|
|
9298
|
-
const
|
|
9299
|
-
const blockType = BLOCK_TYPE_MAP[nodeType];
|
|
9300
|
+
const blockType = BLOCK_TYPE_MAP[node.type];
|
|
9300
9301
|
if (blockType) return blockType;
|
|
9301
9302
|
return null;
|
|
9302
9303
|
}
|
|
@@ -9422,6 +9423,7 @@ var padding_line_between_blocks_default = createRule("padding-line-between-block
|
|
|
9422
9423
|
for (let i = 0; i < containerNode.children.length - 1; i++) {
|
|
9423
9424
|
const prevBlock = containerNode.children[i];
|
|
9424
9425
|
const nextBlock = containerNode.children[i + 1];
|
|
9426
|
+
if (isIgnore(prevBlock)) continue;
|
|
9425
9427
|
const expected = getExpectedPadding(prevBlock, nextBlock);
|
|
9426
9428
|
if (expected === null) continue;
|
|
9427
9429
|
const prevLoc = sourceCode.getLoc(prevBlock);
|
|
@@ -9476,10 +9478,14 @@ var padding_line_between_blocks_default = createRule("padding-line-between-block
|
|
|
9476
9478
|
const startNext = sourceCode.getRange(nextBlock)[0] - nextLoc.start.column;
|
|
9477
9479
|
return fixer.insertTextBeforeRange([startNext, startNext], text);
|
|
9478
9480
|
}
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9481
|
+
if (prevLoc.end.line + 1 < nextLoc.start.line) return fixer.removeRange([sourceCode.getIndexFromLoc({
|
|
9482
|
+
line: prevLoc.end.line + 1,
|
|
9483
|
+
column: 1
|
|
9484
|
+
}), sourceCode.getIndexFromLoc({
|
|
9485
|
+
line: nextLoc.start.line,
|
|
9486
|
+
column: 1
|
|
9487
|
+
})]);
|
|
9488
|
+
return null;
|
|
9483
9489
|
}
|
|
9484
9490
|
});
|
|
9485
9491
|
}
|
|
@@ -9493,6 +9499,16 @@ var padding_line_between_blocks_default = createRule("padding-line-between-block
|
|
|
9493
9499
|
containerStack.shift();
|
|
9494
9500
|
}
|
|
9495
9501
|
};
|
|
9502
|
+
/**
|
|
9503
|
+
* Check if the previous block is ignored
|
|
9504
|
+
*/
|
|
9505
|
+
function isIgnore(prevBlock) {
|
|
9506
|
+
if (isHTMLComment(prevBlock)) {
|
|
9507
|
+
const value = getHTMLCommentValue(prevBlock);
|
|
9508
|
+
if (/^\s*(?:eslint|markdownlint)-disable-next-line\b/u.test(value)) return true;
|
|
9509
|
+
}
|
|
9510
|
+
return false;
|
|
9511
|
+
}
|
|
9496
9512
|
}
|
|
9497
9513
|
});
|
|
9498
9514
|
|
|
@@ -9560,16 +9576,19 @@ var prefer_fenced_code_blocks_default = createRule("prefer-fenced-code-blocks",
|
|
|
9560
9576
|
messageId: "useFencedCodeBlock",
|
|
9561
9577
|
fix(fixer) {
|
|
9562
9578
|
if (!isFixableIndentedCodeBlock(node)) return null;
|
|
9563
|
-
const lines = getParsedLines(sourceCode);
|
|
9564
9579
|
const startColumnOffset = loc.start.column - 1;
|
|
9565
9580
|
const removeRanges = [];
|
|
9566
9581
|
let prefixText = null;
|
|
9567
9582
|
for (let line = loc.start.line; line <= loc.end.line; line++) {
|
|
9568
|
-
const
|
|
9569
|
-
const currentPrefix = normalizePrefix(
|
|
9583
|
+
const lineText = sourceCode.lines[line - 1];
|
|
9584
|
+
const currentPrefix = normalizePrefix(lineText.slice(0, startColumnOffset));
|
|
9570
9585
|
if (!prefixText) prefixText = currentPrefix;
|
|
9571
9586
|
else if (currentPrefix !== prefixText) return null;
|
|
9572
|
-
|
|
9587
|
+
const lineStartIndex = sourceCode.getIndexFromLoc({
|
|
9588
|
+
line,
|
|
9589
|
+
column: 1
|
|
9590
|
+
});
|
|
9591
|
+
let removeRange = [lineStartIndex + startColumnOffset, lineStartIndex + startColumnOffset + 4];
|
|
9573
9592
|
for (let index = removeRange[0]; index < removeRange[1]; index++) {
|
|
9574
9593
|
const c = sourceCode.text[index];
|
|
9575
9594
|
if (c === " ") continue;
|
|
@@ -9581,8 +9600,14 @@ var prefer_fenced_code_blocks_default = createRule("prefer-fenced-code-blocks",
|
|
|
9581
9600
|
}
|
|
9582
9601
|
removeRanges.push(removeRange);
|
|
9583
9602
|
}
|
|
9584
|
-
const beginFenceInsertOffset =
|
|
9585
|
-
|
|
9603
|
+
const beginFenceInsertOffset = sourceCode.getIndexFromLoc({
|
|
9604
|
+
line: loc.start.line,
|
|
9605
|
+
column: 1
|
|
9606
|
+
});
|
|
9607
|
+
const endFenceInsertOffset = sourceCode.lines.length > loc.end.line ? sourceCode.getIndexFromLoc({
|
|
9608
|
+
line: loc.end.line + 1,
|
|
9609
|
+
column: 1
|
|
9610
|
+
}) : sourceCode.text.length;
|
|
9586
9611
|
return [
|
|
9587
9612
|
fixer.insertTextBeforeRange([beginFenceInsertOffset, beginFenceInsertOffset], `${prefixText}\`\`\`\n`),
|
|
9588
9613
|
...removeRanges.map((removeRange) => fixer.removeRange(removeRange)),
|
|
@@ -9596,12 +9621,11 @@ var prefer_fenced_code_blocks_default = createRule("prefer-fenced-code-blocks",
|
|
|
9596
9621
|
*/
|
|
9597
9622
|
function isFixableIndentedCodeBlock(node) {
|
|
9598
9623
|
if (!node.value.startsWith(" ")) return true;
|
|
9599
|
-
const lines = getParsedLines(sourceCode);
|
|
9600
9624
|
const loc = sourceCode.getLoc(node);
|
|
9601
|
-
const
|
|
9625
|
+
const firstLineText = sourceCode.lines[loc.start.line - 1];
|
|
9602
9626
|
const codeBlockFirstLine = normalizePrefix(node.value.split(/\r?\n/u)[0]);
|
|
9603
9627
|
const startColumnOffset = loc.start.column - 1;
|
|
9604
|
-
return normalizePrefix(
|
|
9628
|
+
return normalizePrefix(firstLineText.slice(startColumnOffset)).startsWith(codeBlockFirstLine);
|
|
9605
9629
|
}
|
|
9606
9630
|
}
|
|
9607
9631
|
});
|
|
@@ -9632,10 +9656,8 @@ function* iterateSearchWords({ sourceCode, node, words, ignores }) {
|
|
|
9632
9656
|
startPosition = index + word.length;
|
|
9633
9657
|
if (!RE_BOUNDARY.test(text[index - 1] || "") || !RE_BOUNDARY.test(text[index + word.length] || "")) continue;
|
|
9634
9658
|
const [nodeStart] = sourceCode.getRange(node);
|
|
9635
|
-
const range = [nodeStart + index, nodeStart + index + word.length];
|
|
9636
9659
|
yield {
|
|
9637
|
-
|
|
9638
|
-
range,
|
|
9660
|
+
range: [nodeStart + index, nodeStart + index + word.length],
|
|
9639
9661
|
word
|
|
9640
9662
|
};
|
|
9641
9663
|
}
|
|
@@ -9740,7 +9762,7 @@ var prefer_inline_code_words_default = createRule("prefer-inline-code-words", {
|
|
|
9740
9762
|
if (shortcutLinkReference === node) shortcutLinkReference = null;
|
|
9741
9763
|
},
|
|
9742
9764
|
text(node) {
|
|
9743
|
-
for (const { word,
|
|
9765
|
+
for (const { word, range } of iterateSearchWords({
|
|
9744
9766
|
sourceCode,
|
|
9745
9767
|
node,
|
|
9746
9768
|
words,
|
|
@@ -9749,7 +9771,10 @@ var prefer_inline_code_words_default = createRule("prefer-inline-code-words", {
|
|
|
9749
9771
|
const shortcutLinkReferenceToReport = shortcutLinkReference;
|
|
9750
9772
|
context.report({
|
|
9751
9773
|
node,
|
|
9752
|
-
loc
|
|
9774
|
+
loc: {
|
|
9775
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
9776
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
9777
|
+
},
|
|
9753
9778
|
messageId: "requireInlineCode",
|
|
9754
9779
|
data: { name: word },
|
|
9755
9780
|
*fix(fixer) {
|
|
@@ -9827,7 +9852,7 @@ var prefer_link_reference_definitions_default = createRule("prefer-link-referenc
|
|
|
9827
9852
|
while (definitions.some((def) => def.identifier === identifier)) identifier = `${original}-${++seq}`;
|
|
9828
9853
|
}
|
|
9829
9854
|
}
|
|
9830
|
-
yield fixer.
|
|
9855
|
+
yield fixer.replaceTextRange([linkInfo.bracketsRange[0], sourceCode.getRange(link)[1]], `${sourceCode.text.slice(...linkInfo.bracketsRange)}${identifier === linkInfo.label ? "" : `[${identifier}]`}`);
|
|
9831
9856
|
if (!definition) {
|
|
9832
9857
|
const linkRange = sourceCode.getRange(link);
|
|
9833
9858
|
const nextSectionHeading = headings.find((heading) => linkRange[1] < sourceCode.getRange(heading)[0]);
|
|
@@ -9893,21 +9918,17 @@ var prefer_link_reference_definitions_default = createRule("prefer-link-referenc
|
|
|
9893
9918
|
const range = sourceCode.getRange(link);
|
|
9894
9919
|
if (link.type === "link") {
|
|
9895
9920
|
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
9921
|
return {
|
|
9899
|
-
label:
|
|
9922
|
+
label: sourceCode.text.slice(...bracketsRange$1).slice(1, -1).trim(),
|
|
9900
9923
|
bracketsRange: bracketsRange$1,
|
|
9901
|
-
urlAndTitleRange: [
|
|
9924
|
+
urlAndTitleRange: [sourceCode.text.indexOf("(", bracketsRange$1[1]), range[1]]
|
|
9902
9925
|
};
|
|
9903
9926
|
}
|
|
9904
9927
|
const bracketsRange = getImageBracketsRange(link);
|
|
9905
|
-
const linkLabelText = sourceCode.text.slice(...bracketsRange).slice(1, -1).trim();
|
|
9906
|
-
const urlStartIndex = sourceCode.text.indexOf("(", bracketsRange[1]);
|
|
9907
9928
|
return {
|
|
9908
|
-
label:
|
|
9929
|
+
label: sourceCode.text.slice(...bracketsRange).slice(1, -1).trim(),
|
|
9909
9930
|
bracketsRange,
|
|
9910
|
-
urlAndTitleRange: [
|
|
9931
|
+
urlAndTitleRange: [sourceCode.text.indexOf("(", bracketsRange[1]), range[1]]
|
|
9911
9932
|
};
|
|
9912
9933
|
}
|
|
9913
9934
|
/**
|
|
@@ -9995,7 +10016,7 @@ var prefer_linked_words_default = createRule("prefer-linked-words", {
|
|
|
9995
10016
|
},
|
|
9996
10017
|
text(node) {
|
|
9997
10018
|
if (linkedNode) return;
|
|
9998
|
-
for (const { word,
|
|
10019
|
+
for (const { word, range } of iterateSearchWords({
|
|
9999
10020
|
sourceCode,
|
|
10000
10021
|
node,
|
|
10001
10022
|
words,
|
|
@@ -10004,7 +10025,10 @@ var prefer_linked_words_default = createRule("prefer-linked-words", {
|
|
|
10004
10025
|
const link = links[word];
|
|
10005
10026
|
context.report({
|
|
10006
10027
|
node,
|
|
10007
|
-
loc
|
|
10028
|
+
loc: {
|
|
10029
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
10030
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
10031
|
+
},
|
|
10008
10032
|
messageId: "requireLink",
|
|
10009
10033
|
data: { name: word },
|
|
10010
10034
|
fix: link ? (fixer) => {
|
|
@@ -10120,7 +10144,10 @@ var setext_heading_underline_length_default = createRule("setext-heading-underli
|
|
|
10120
10144
|
context.report({
|
|
10121
10145
|
node,
|
|
10122
10146
|
messageId,
|
|
10123
|
-
loc:
|
|
10147
|
+
loc: {
|
|
10148
|
+
start: sourceCode.getLocFromIndex(parsed.underline.range[0]),
|
|
10149
|
+
end: sourceCode.getLocFromIndex(parsed.underline.range[1])
|
|
10150
|
+
},
|
|
10124
10151
|
data: { expectedLength: String(expectedLength) },
|
|
10125
10152
|
fix(fixer) {
|
|
10126
10153
|
const newUnderline = parsed.underline.marker.repeat(expectedLength);
|
|
@@ -10216,7 +10243,7 @@ var setext_heading_underline_length_default = createRule("setext-heading-underli
|
|
|
10216
10243
|
for (const node of setextHeadings) {
|
|
10217
10244
|
const parsed = getParsedSetextHeading(node);
|
|
10218
10245
|
if (!parsed) continue;
|
|
10219
|
-
expectedLineLength = Math.max(parsed.underline.
|
|
10246
|
+
expectedLineLength = Math.max(sourceCode.getLocFromIndex(parsed.underline.range[1]).column - 1, minimumRequiredLineLength);
|
|
10220
10247
|
break;
|
|
10221
10248
|
}
|
|
10222
10249
|
} else if (align === "exact") for (const node of setextHeadings) {
|
|
@@ -10230,13 +10257,14 @@ var setext_heading_underline_length_default = createRule("setext-heading-underli
|
|
|
10230
10257
|
const parsed = getParsedSetextHeading(node);
|
|
10231
10258
|
if (!parsed) continue;
|
|
10232
10259
|
maxLineWidth = Math.max(maxLineWidth, getMaxHeaderLineWidth(parsed));
|
|
10233
|
-
expectedLineLength = Math.max(expectedLineLength, parsed.underline.
|
|
10260
|
+
expectedLineLength = Math.max(expectedLineLength, sourceCode.getLocFromIndex(parsed.underline.range[1]).column - 1);
|
|
10234
10261
|
}
|
|
10235
10262
|
if (expectedLineLength < maxLineWidth) expectedLineLength = maxLineWidth;
|
|
10236
10263
|
else for (const node of setextHeadings) {
|
|
10237
10264
|
const parsed = getParsedSetextHeading(node);
|
|
10238
10265
|
if (!parsed) continue;
|
|
10239
|
-
|
|
10266
|
+
const underlineEndLoc = sourceCode.getLocFromIndex(parsed.underline.range[1]);
|
|
10267
|
+
if (maxLineWidth <= underlineEndLoc.column - 1) expectedLineLength = Math.min(expectedLineLength, underlineEndLoc.column - 1);
|
|
10240
10268
|
}
|
|
10241
10269
|
} else if (align === "length") expectedLineLength = Math.max(fixedLength, minimumRequiredLineLength);
|
|
10242
10270
|
else return;
|
|
@@ -10417,13 +10445,12 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10417
10445
|
const previousNodes = definitions.slice(previousNodeIndex, targetNodeIndex);
|
|
10418
10446
|
const before = definitions.slice(0, previousNodeIndex);
|
|
10419
10447
|
const after = definitions.slice(targetNodeIndex + 1);
|
|
10420
|
-
|
|
10448
|
+
return fixReplaceDefinitions(fixer, definitions, [
|
|
10421
10449
|
...before,
|
|
10422
10450
|
node,
|
|
10423
10451
|
...previousNodes,
|
|
10424
10452
|
...after
|
|
10425
|
-
];
|
|
10426
|
-
return fixReplaceDefinitions(fixer, definitions, movedNodes);
|
|
10453
|
+
]);
|
|
10427
10454
|
}
|
|
10428
10455
|
});
|
|
10429
10456
|
}
|
|
@@ -10444,13 +10471,12 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10444
10471
|
const nextNodes = definitions.slice(targetNodeIndex + 1, nextNodeIndex + 1);
|
|
10445
10472
|
const before = definitions.slice(0, targetNodeIndex);
|
|
10446
10473
|
const after = definitions.slice(nextNodeIndex + 1);
|
|
10447
|
-
|
|
10474
|
+
return fixReplaceDefinitions(fixer, definitions, [
|
|
10448
10475
|
...before,
|
|
10449
10476
|
...nextNodes,
|
|
10450
10477
|
node,
|
|
10451
10478
|
...after
|
|
10452
|
-
];
|
|
10453
|
-
return fixReplaceDefinitions(fixer, definitions, movedNodes);
|
|
10479
|
+
]);
|
|
10454
10480
|
}
|
|
10455
10481
|
});
|
|
10456
10482
|
}
|
|
@@ -10492,8 +10518,13 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10492
10518
|
const oldNextNode = definitions[index + 1];
|
|
10493
10519
|
const oldNextLoc = sourceCode.getLoc(oldNextNode);
|
|
10494
10520
|
if (oldNextLoc.start.line - linkLoc.end.line > 1) {
|
|
10495
|
-
|
|
10496
|
-
|
|
10521
|
+
if (!sourceCode.lines[oldNextLoc.start.line - 2].replaceAll(">", "").trim()) removeLine = [sourceCode.getIndexFromLoc({
|
|
10522
|
+
line: oldNextLoc.start.line - 1,
|
|
10523
|
+
column: 1
|
|
10524
|
+
}), sourceCode.getIndexFromLoc({
|
|
10525
|
+
line: oldNextLoc.start.line,
|
|
10526
|
+
column: 1
|
|
10527
|
+
})];
|
|
10497
10528
|
}
|
|
10498
10529
|
}
|
|
10499
10530
|
}
|
|
@@ -10505,8 +10536,7 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10505
10536
|
*/
|
|
10506
10537
|
function verify(definitions) {
|
|
10507
10538
|
if (definitions.length === 0) return;
|
|
10508
|
-
const
|
|
10509
|
-
const editScript = calcShortestEditScript(definitions, sorted);
|
|
10539
|
+
const editScript = calcShortestEditScript(definitions, [...definitions].sort(option.compare));
|
|
10510
10540
|
for (let index = 0; index < editScript.length; index++) {
|
|
10511
10541
|
const edit = editScript[index];
|
|
10512
10542
|
if (edit.type !== "delete") continue;
|
|
@@ -10616,14 +10646,14 @@ var sort_definitions_default = createRule("sort-definitions", {
|
|
|
10616
10646
|
}
|
|
10617
10647
|
/** Compile order option */
|
|
10618
10648
|
function compileOption(orderOption) {
|
|
10619
|
-
const cache$
|
|
10649
|
+
const cache$1 = /* @__PURE__ */ new Map();
|
|
10620
10650
|
const compiled = compileOptionWithoutCache(orderOption);
|
|
10621
10651
|
return {
|
|
10622
10652
|
match: (node) => {
|
|
10623
|
-
const cached = cache$
|
|
10653
|
+
const cached = cache$1.get(node);
|
|
10624
10654
|
if (cached != null) return cached;
|
|
10625
10655
|
const result = compiled.match(node);
|
|
10626
|
-
cache$
|
|
10656
|
+
cache$1.set(node, result);
|
|
10627
10657
|
return result;
|
|
10628
10658
|
},
|
|
10629
10659
|
sort: compiled.sort
|
|
@@ -10825,14 +10855,14 @@ var table_header_casing_default = createRule("table-header-casing", {
|
|
|
10825
10855
|
* Check text node and report word-level errors
|
|
10826
10856
|
*/
|
|
10827
10857
|
function checkTextNode(node, firstNode, lastNode) {
|
|
10828
|
-
const
|
|
10829
|
-
const wordAndOffsets = parseWordsFromText(text, firstNode, lastNode);
|
|
10858
|
+
const wordAndOffsets = parseWordsFromText(sourceCode.getText(node), firstNode, lastNode);
|
|
10830
10859
|
const processed = /* @__PURE__ */ new Set();
|
|
10831
10860
|
for (let index = 0; index < wordAndOffsets.length; index++) {
|
|
10832
10861
|
if (processed.has(index)) continue;
|
|
10833
10862
|
processed.add(index);
|
|
10834
10863
|
const wordAndOffset = wordAndOffsets[index];
|
|
10835
10864
|
if (wordAndOffset.punctuation) continue;
|
|
10865
|
+
if (wordAndOffset.wellknownWord) continue;
|
|
10836
10866
|
if (ignorePatterns.some((pattern) => pattern.test(wordAndOffset.word))) continue;
|
|
10837
10867
|
const preservePhrase = preserveWordsOption.findPreservePhrase((function* () {
|
|
10838
10868
|
const firstWord = wordAndOffsets[index];
|
|
@@ -10873,7 +10903,10 @@ var table_header_casing_default = createRule("table-header-casing", {
|
|
|
10873
10903
|
actual: word,
|
|
10874
10904
|
expected: expectedWord
|
|
10875
10905
|
},
|
|
10876
|
-
loc:
|
|
10906
|
+
loc: {
|
|
10907
|
+
start: sourceCode.getLocFromIndex(range[0]),
|
|
10908
|
+
end: sourceCode.getLocFromIndex(range[1])
|
|
10909
|
+
},
|
|
10877
10910
|
fix(fixer) {
|
|
10878
10911
|
return fixer.replaceTextRange(range, expectedWord);
|
|
10879
10912
|
}
|
|
@@ -10932,32 +10965,30 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
10932
10965
|
function verifyTablePipes(node) {
|
|
10933
10966
|
for (const row of node.children) verifyTableRowPipes(row);
|
|
10934
10967
|
const parsedDelimiterRow = parseTableDelimiterRow(sourceCode, node);
|
|
10935
|
-
if (parsedDelimiterRow) verifyTableLinePipes(parsedDelimiterRow.range, parsedDelimiterRow.
|
|
10968
|
+
if (parsedDelimiterRow) verifyTableLinePipes(parsedDelimiterRow.range, parsedDelimiterRow.delimiters.length);
|
|
10936
10969
|
}
|
|
10937
10970
|
/**
|
|
10938
10971
|
* Verify the table row pipes
|
|
10939
10972
|
*/
|
|
10940
10973
|
function verifyTableRowPipes(node) {
|
|
10941
|
-
|
|
10942
|
-
const range = sourceCode.getRange(node);
|
|
10943
|
-
verifyTableLinePipes(range, loc, node.children.length);
|
|
10974
|
+
verifyTableLinePipes(sourceCode.getRange(node), node.children.length);
|
|
10944
10975
|
}
|
|
10945
10976
|
/**
|
|
10946
10977
|
* Verify the table line pipes
|
|
10947
10978
|
*/
|
|
10948
|
-
function verifyTableLinePipes(lineContentRange,
|
|
10949
|
-
verifyTableLeadingPipe(lineContentRange,
|
|
10950
|
-
verifyTableTrailingPipe(lineContentRange,
|
|
10979
|
+
function verifyTableLinePipes(lineContentRange, columnCount) {
|
|
10980
|
+
verifyTableLeadingPipe(lineContentRange, columnCount);
|
|
10981
|
+
verifyTableTrailingPipe(lineContentRange, columnCount);
|
|
10951
10982
|
}
|
|
10952
10983
|
/**
|
|
10953
10984
|
* Verify the table leading pipe
|
|
10954
10985
|
*/
|
|
10955
|
-
function verifyTableLeadingPipe(lineContentRange,
|
|
10986
|
+
function verifyTableLeadingPipe(lineContentRange, columnCount) {
|
|
10956
10987
|
if (leadingOption === "always") {
|
|
10957
10988
|
if (sourceCode.text.startsWith("|", lineContentRange[0])) return;
|
|
10958
10989
|
context.report({
|
|
10959
10990
|
messageId: "missingLeadingPipe",
|
|
10960
|
-
loc:
|
|
10991
|
+
loc: sourceCode.getLocFromIndex(lineContentRange[0]),
|
|
10961
10992
|
fix(fixer) {
|
|
10962
10993
|
return fixer.insertTextBeforeRange(lineContentRange, "| ");
|
|
10963
10994
|
}
|
|
@@ -10969,13 +11000,14 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
10969
11000
|
if (!sourceCode.text.startsWith("|", lineContentRange[0])) return;
|
|
10970
11001
|
let endIndex = lineContentRange[0] + 1;
|
|
10971
11002
|
while (endIndex < lineContentRange[1] && isSpaceOrTab(sourceCode.text[endIndex])) endIndex++;
|
|
11003
|
+
const startLoc = sourceCode.getLocFromIndex(lineContentRange[0]);
|
|
10972
11004
|
context.report({
|
|
10973
11005
|
messageId: "unexpectedLeadingPipe",
|
|
10974
11006
|
loc: {
|
|
10975
|
-
start:
|
|
11007
|
+
start: startLoc,
|
|
10976
11008
|
end: {
|
|
10977
|
-
line:
|
|
10978
|
-
column:
|
|
11009
|
+
line: startLoc.line,
|
|
11010
|
+
column: startLoc.column + (endIndex - lineContentRange[0])
|
|
10979
11011
|
}
|
|
10980
11012
|
},
|
|
10981
11013
|
fix(fixer) {
|
|
@@ -10987,12 +11019,12 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
10987
11019
|
/**
|
|
10988
11020
|
* Verify the table trailing pipe
|
|
10989
11021
|
*/
|
|
10990
|
-
function verifyTableTrailingPipe(lineContentRange,
|
|
11022
|
+
function verifyTableTrailingPipe(lineContentRange, columnCount) {
|
|
10991
11023
|
if (trailingOption === "always") {
|
|
10992
11024
|
if (sourceCode.text.endsWith("|", lineContentRange[1])) return;
|
|
10993
11025
|
context.report({
|
|
10994
11026
|
messageId: "missingTrailingPipe",
|
|
10995
|
-
loc:
|
|
11027
|
+
loc: sourceCode.getLocFromIndex(lineContentRange[1]),
|
|
10996
11028
|
fix(fixer) {
|
|
10997
11029
|
return fixer.insertTextAfterRange(lineContentRange, " |");
|
|
10998
11030
|
}
|
|
@@ -11004,14 +11036,15 @@ var table_leading_trailing_pipes_default = createRule("table-leading-trailing-pi
|
|
|
11004
11036
|
if (!sourceCode.text.endsWith("|", lineContentRange[1])) return;
|
|
11005
11037
|
let startIndex = lineContentRange[1] - 1;
|
|
11006
11038
|
while (startIndex - 1 > lineContentRange[0] && isSpaceOrTab(sourceCode.text[startIndex - 1])) startIndex--;
|
|
11039
|
+
const endLoc = sourceCode.getLocFromIndex(lineContentRange[1]);
|
|
11007
11040
|
context.report({
|
|
11008
11041
|
messageId: "unexpectedTrailingPipe",
|
|
11009
11042
|
loc: {
|
|
11010
11043
|
start: {
|
|
11011
|
-
line:
|
|
11012
|
-
column:
|
|
11044
|
+
line: endLoc.line,
|
|
11045
|
+
column: endLoc.column - (lineContentRange[1] - startIndex)
|
|
11013
11046
|
},
|
|
11014
|
-
end:
|
|
11047
|
+
end: endLoc
|
|
11015
11048
|
},
|
|
11016
11049
|
fix(fixer) {
|
|
11017
11050
|
return fixer.removeRange([startIndex, lineContentRange[1]]);
|
|
@@ -11157,7 +11190,10 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11157
11190
|
if (options.leadingSpace === "always") {
|
|
11158
11191
|
if (pipe.range[1] < nextToken.range[0]) return true;
|
|
11159
11192
|
context.report({
|
|
11160
|
-
loc:
|
|
11193
|
+
loc: {
|
|
11194
|
+
start: sourceCode.getLocFromIndex(pipe.range[0]),
|
|
11195
|
+
end: sourceCode.getLocFromIndex(pipe.range[1])
|
|
11196
|
+
},
|
|
11161
11197
|
messageId: "expectedSpaceAfter",
|
|
11162
11198
|
fix(fixer) {
|
|
11163
11199
|
return fixer.insertTextAfterRange(pipe.range, " ");
|
|
@@ -11168,8 +11204,8 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11168
11204
|
if (pipe.range[1] === nextToken.range[0]) return true;
|
|
11169
11205
|
context.report({
|
|
11170
11206
|
loc: {
|
|
11171
|
-
start: pipe.
|
|
11172
|
-
end: nextToken.
|
|
11207
|
+
start: sourceCode.getLocFromIndex(pipe.range[1]),
|
|
11208
|
+
end: sourceCode.getLocFromIndex(nextToken.range[0])
|
|
11173
11209
|
},
|
|
11174
11210
|
messageId: "expectedNoSpaceAfter",
|
|
11175
11211
|
fix(fixer) {
|
|
@@ -11187,7 +11223,10 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11187
11223
|
if (options.trailingSpace === "always") {
|
|
11188
11224
|
if (prevToken.range[1] < pipe.range[0]) return true;
|
|
11189
11225
|
context.report({
|
|
11190
|
-
loc:
|
|
11226
|
+
loc: {
|
|
11227
|
+
start: sourceCode.getLocFromIndex(pipe.range[0]),
|
|
11228
|
+
end: sourceCode.getLocFromIndex(pipe.range[1])
|
|
11229
|
+
},
|
|
11191
11230
|
messageId: "expectedSpaceBefore",
|
|
11192
11231
|
fix(fixer) {
|
|
11193
11232
|
return fixer.insertTextBeforeRange(pipe.range, " ");
|
|
@@ -11198,8 +11237,8 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11198
11237
|
if (prevToken.range[1] === pipe.range[0]) return true;
|
|
11199
11238
|
context.report({
|
|
11200
11239
|
loc: {
|
|
11201
|
-
start: prevToken.
|
|
11202
|
-
end: pipe.
|
|
11240
|
+
start: sourceCode.getLocFromIndex(prevToken.range[1]),
|
|
11241
|
+
end: sourceCode.getLocFromIndex(pipe.range[0])
|
|
11203
11242
|
},
|
|
11204
11243
|
messageId: "expectedNoSpaceBefore",
|
|
11205
11244
|
fix(fixer) {
|
|
@@ -11216,15 +11255,18 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11216
11255
|
*/
|
|
11217
11256
|
function verifyAlignPipe({ leadingPipe, content, trailingPipe }, cellAlign) {
|
|
11218
11257
|
if (!leadingPipe || !trailingPipe || !content) return null;
|
|
11219
|
-
const lineText = sourceCode.lines[leadingPipe.
|
|
11258
|
+
const lineText = sourceCode.lines[sourceCode.getLocFromIndex(leadingPipe.range[0]).line - 1];
|
|
11220
11259
|
if (cellAlign === "left") {
|
|
11221
11260
|
const expectedWidth = options.leadingSpace === "always" ? 1 : 0;
|
|
11222
11261
|
if (getLeadingSpacesWidth() === expectedWidth) return null;
|
|
11223
11262
|
context.report({
|
|
11224
11263
|
loc: leadingPipe.range[1] < content.range[0] ? {
|
|
11225
|
-
start: leadingPipe.
|
|
11226
|
-
end: content.
|
|
11227
|
-
} :
|
|
11264
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[1]),
|
|
11265
|
+
end: sourceCode.getLocFromIndex(content.range[0])
|
|
11266
|
+
} : {
|
|
11267
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[0]),
|
|
11268
|
+
end: sourceCode.getLocFromIndex(leadingPipe.range[1])
|
|
11269
|
+
},
|
|
11228
11270
|
messageId: expectedWidth >= 1 ? "expectedAlignLeft" : "expectedNoSpaceAlignLeft",
|
|
11229
11271
|
*fix(fixer) {
|
|
11230
11272
|
const cellWidth = getCellWidth();
|
|
@@ -11241,9 +11283,12 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11241
11283
|
if (getTrailingSpacesWidth() === expectedWidth) return null;
|
|
11242
11284
|
context.report({
|
|
11243
11285
|
loc: content.range[1] < trailingPipe.range[0] ? {
|
|
11244
|
-
start: content.
|
|
11245
|
-
end: trailingPipe.
|
|
11246
|
-
} :
|
|
11286
|
+
start: sourceCode.getLocFromIndex(content.range[1]),
|
|
11287
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[0])
|
|
11288
|
+
} : {
|
|
11289
|
+
start: sourceCode.getLocFromIndex(trailingPipe.range[0]),
|
|
11290
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[1])
|
|
11291
|
+
},
|
|
11247
11292
|
messageId: expectedWidth >= 1 ? "expectedAlignRight" : "expectedNoSpaceAlignRight",
|
|
11248
11293
|
*fix(fixer) {
|
|
11249
11294
|
const cellWidth = getCellWidth();
|
|
@@ -11260,20 +11305,24 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11260
11305
|
const trailingSpacesWidth = getTrailingSpacesWidth();
|
|
11261
11306
|
if (leadingSpacesWidth === trailingSpacesWidth || leadingSpacesWidth + 1 === trailingSpacesWidth) return null;
|
|
11262
11307
|
const leadingReportLoc = leadingPipe.range[1] < content.range[0] ? {
|
|
11263
|
-
start: leadingPipe.
|
|
11264
|
-
end: content.
|
|
11265
|
-
} :
|
|
11308
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[1]),
|
|
11309
|
+
end: sourceCode.getLocFromIndex(content.range[0])
|
|
11310
|
+
} : {
|
|
11311
|
+
start: sourceCode.getLocFromIndex(leadingPipe.range[0]),
|
|
11312
|
+
end: sourceCode.getLocFromIndex(leadingPipe.range[1])
|
|
11313
|
+
};
|
|
11266
11314
|
const trailingReportLoc = content.range[1] < trailingPipe.range[0] ? {
|
|
11267
|
-
start: content.
|
|
11268
|
-
end: trailingPipe.
|
|
11269
|
-
} :
|
|
11315
|
+
start: sourceCode.getLocFromIndex(content.range[1]),
|
|
11316
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[0])
|
|
11317
|
+
} : {
|
|
11318
|
+
start: sourceCode.getLocFromIndex(trailingPipe.range[0]),
|
|
11319
|
+
end: sourceCode.getLocFromIndex(trailingPipe.range[1])
|
|
11320
|
+
};
|
|
11270
11321
|
for (const reportLoc of [leadingReportLoc, trailingReportLoc]) context.report({
|
|
11271
11322
|
loc: reportLoc,
|
|
11272
11323
|
messageId: "expectedAlignCenter",
|
|
11273
11324
|
*fix(fixer) {
|
|
11274
|
-
const
|
|
11275
|
-
const contentTextWidth = getContentTextWidth();
|
|
11276
|
-
const spacesLength = cellWidth - contentTextWidth;
|
|
11325
|
+
const spacesLength = getCellWidth() - getContentTextWidth();
|
|
11277
11326
|
const leadingSpacesLength = Math.floor(spacesLength / 2);
|
|
11278
11327
|
const trailingSpacesLength = spacesLength - leadingSpacesLength;
|
|
11279
11328
|
const newLeadingSpaces = " ".repeat(leadingSpacesLength);
|
|
@@ -11289,33 +11338,34 @@ var table_pipe_spacing_default = createRule("table-pipe-spacing", {
|
|
|
11289
11338
|
* Get the width of the leading spaces in the cell.
|
|
11290
11339
|
*/
|
|
11291
11340
|
function getLeadingSpacesWidth() {
|
|
11292
|
-
return getTextWidth(lineText, leadingPipe.
|
|
11341
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(leadingPipe.range[1]).column - 1, sourceCode.getLocFromIndex(content.range[0]).column - 1);
|
|
11293
11342
|
}
|
|
11294
11343
|
/**
|
|
11295
11344
|
* Get the width of the trailing spaces in the cell.
|
|
11296
11345
|
*/
|
|
11297
11346
|
function getTrailingSpacesWidth() {
|
|
11298
|
-
return getTextWidth(lineText, content.
|
|
11347
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(content.range[1]).column - 1, sourceCode.getLocFromIndex(trailingPipe.range[0]).column - 1);
|
|
11299
11348
|
}
|
|
11300
11349
|
/**
|
|
11301
11350
|
* Get the width of the whole cell (including leading and trailing spaces)
|
|
11302
11351
|
*/
|
|
11303
11352
|
function getCellWidth() {
|
|
11304
|
-
return getTextWidth(lineText, leadingPipe.
|
|
11353
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(leadingPipe.range[1]).column - 1, sourceCode.getLocFromIndex(trailingPipe.range[0]).column - 1);
|
|
11305
11354
|
}
|
|
11306
11355
|
/**
|
|
11307
11356
|
* Get the width of the content text (excluding leading and trailing spaces)
|
|
11308
11357
|
*/
|
|
11309
11358
|
function getContentTextWidth() {
|
|
11310
|
-
return getTextWidth(lineText, content.
|
|
11359
|
+
return getTextWidth(lineText, sourceCode.getLocFromIndex(content.range[0]).column - 1, sourceCode.getLocFromIndex(content.range[1]).column - 1);
|
|
11311
11360
|
}
|
|
11312
11361
|
/**
|
|
11313
11362
|
* Get the normalized content text (with normalized spaces)
|
|
11314
11363
|
*/
|
|
11315
11364
|
function getNormalizedContentText() {
|
|
11316
|
-
const
|
|
11365
|
+
const contentStartLoc = sourceCode.getLocFromIndex(content.range[0]);
|
|
11366
|
+
const prefixWidth = getWidth(lineText.slice(0, contentStartLoc.column - 1));
|
|
11317
11367
|
let result = "";
|
|
11318
|
-
for (const c of lineText.slice(
|
|
11368
|
+
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
11369
|
else result += c;
|
|
11320
11370
|
return result;
|
|
11321
11371
|
}
|
|
@@ -11555,7 +11605,7 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11555
11605
|
const firstCell = this.rows[0].cells[0];
|
|
11556
11606
|
const firstToken = firstCell.leadingPipe ?? firstCell.content;
|
|
11557
11607
|
if (!firstToken) return null;
|
|
11558
|
-
return getTextWidth(sourceCode.lines[firstToken.
|
|
11608
|
+
return getTextWidth(sourceCode.lines[sourceCode.getLocFromIndex(firstToken.range[0]).line - 1], 0, sourceCode.getLocFromIndex(firstToken.range[0]).column - 1);
|
|
11559
11609
|
}
|
|
11560
11610
|
if (options.columnOption === "minimum") return this.getMinimumPipePosition(pipeIndex);
|
|
11561
11611
|
else if (options.columnOption === "consistent") {
|
|
@@ -11564,7 +11614,8 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11564
11614
|
if (row.cells.length <= columnIndex) continue;
|
|
11565
11615
|
const cell = row.cells[columnIndex];
|
|
11566
11616
|
if (cell.type === "delimiter" || !cell.trailingPipe) continue;
|
|
11567
|
-
const
|
|
11617
|
+
const trailingPipeStartLoc = sourceCode.getLocFromIndex(cell.trailingPipe.range[0]);
|
|
11618
|
+
const width = getTextWidth(sourceCode.lines[trailingPipeStartLoc.line - 1], 0, trailingPipeStartLoc.column - 1);
|
|
11568
11619
|
return Math.max(width, this.getMinimumPipePosition(pipeIndex) || 0);
|
|
11569
11620
|
}
|
|
11570
11621
|
}
|
|
@@ -11583,20 +11634,24 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11583
11634
|
const cell = row.cells[columnIndex];
|
|
11584
11635
|
let width;
|
|
11585
11636
|
if (cell.leadingPipe) {
|
|
11586
|
-
const
|
|
11637
|
+
const leadingPipeEndLoc = sourceCode.getLocFromIndex(cell.leadingPipe.range[1]);
|
|
11638
|
+
const leadingPipeEndOffset = getTextWidth(sourceCode.lines[leadingPipeEndLoc.line - 1], 0, leadingPipeEndLoc.column - 1);
|
|
11587
11639
|
let contentLength;
|
|
11588
11640
|
if (cell.type === "delimiter") contentLength = getMinimumDelimiterLength(cell.align);
|
|
11589
11641
|
else {
|
|
11590
11642
|
if (!cell.content) continue;
|
|
11591
|
-
|
|
11643
|
+
const contentStartLoc = sourceCode.getLocFromIndex(cell.content.range[0]);
|
|
11644
|
+
contentLength = getTextWidth(sourceCode.lines[contentStartLoc.line - 1], contentStartLoc.column - 1, sourceCode.getLocFromIndex(cell.content.range[1]).column - 1);
|
|
11592
11645
|
}
|
|
11593
11646
|
width = leadingPipeEndOffset + (needSpaceAfterPipe ? 1 : 0) + contentLength;
|
|
11594
11647
|
} else if (cell.type === "delimiter") {
|
|
11595
11648
|
const minimumDelimiterLength = getMinimumDelimiterLength(cell.align);
|
|
11596
|
-
|
|
11649
|
+
const delimiterStartLoc = sourceCode.getLocFromIndex(cell.delimiter.range[0]);
|
|
11650
|
+
width = getTextWidth(sourceCode.lines[delimiterStartLoc.line - 1], 0, delimiterStartLoc.column - 1) + minimumDelimiterLength;
|
|
11597
11651
|
} else {
|
|
11598
11652
|
if (!cell.content) continue;
|
|
11599
|
-
|
|
11653
|
+
const contentEndLoc = sourceCode.getLocFromIndex(cell.content.range[1]);
|
|
11654
|
+
width = getTextWidth(sourceCode.lines[contentEndLoc.line - 1], 0, contentEndLoc.column - 1);
|
|
11600
11655
|
}
|
|
11601
11656
|
if (needSpaceBeforePipe) width += 1;
|
|
11602
11657
|
maxWidth = Math.max(maxWidth, width);
|
|
@@ -11676,11 +11731,14 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11676
11731
|
function verifyPipe(pipe, pipeIndex, table, cell) {
|
|
11677
11732
|
const expected = table.getExpectedPipePosition(pipeIndex);
|
|
11678
11733
|
if (expected == null) return true;
|
|
11679
|
-
const
|
|
11680
|
-
const diff = expected -
|
|
11734
|
+
const pipeStartLoc = sourceCode.getLocFromIndex(pipe.range[0]);
|
|
11735
|
+
const diff = expected - getTextWidth(sourceCode.lines[pipeStartLoc.line - 1], 0, pipeStartLoc.column - 1);
|
|
11681
11736
|
if (diff === 0) return true;
|
|
11682
11737
|
context.report({
|
|
11683
|
-
loc:
|
|
11738
|
+
loc: {
|
|
11739
|
+
start: sourceCode.getLocFromIndex(pipe.range[0]),
|
|
11740
|
+
end: sourceCode.getLocFromIndex(pipe.range[1])
|
|
11741
|
+
},
|
|
11684
11742
|
messageId: diff > 0 ? "addSpaces" : "removeSpaces",
|
|
11685
11743
|
data: {
|
|
11686
11744
|
expected: String(expected),
|
|
@@ -11695,9 +11753,8 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11695
11753
|
const baseEdit = fixRemoveSpaces();
|
|
11696
11754
|
if (baseEdit) return baseEdit;
|
|
11697
11755
|
if (pipeIndex === 0 || cell.type === "cell") return null;
|
|
11698
|
-
const
|
|
11699
|
-
const
|
|
11700
|
-
const newLength = expected - widthBeforeDelimiter;
|
|
11756
|
+
const delimiterStartLoc = sourceCode.getLocFromIndex(cell.delimiter.range[0]);
|
|
11757
|
+
const newLength = expected - getTextWidth(sourceCode.lines[delimiterStartLoc.line - 1].slice(0, delimiterStartLoc.column - 1));
|
|
11701
11758
|
const minimumDelimiterLength = getMinimumDelimiterLength(cell.align);
|
|
11702
11759
|
const spaceAfter = table.isNeedSpaceBetweenContentAndTrailingPipe(pipeIndex) ? " " : "";
|
|
11703
11760
|
if (newLength < minimumDelimiterLength + spaceAfter.length) {
|
|
@@ -11716,11 +11773,10 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11716
11773
|
* Fixer to remove spaces before the pipe
|
|
11717
11774
|
*/
|
|
11718
11775
|
function fixRemoveSpaces() {
|
|
11719
|
-
const beforePipe = sourceCode.lines[
|
|
11776
|
+
const beforePipe = sourceCode.lines[pipeStartLoc.line - 1].slice(0, pipeStartLoc.column - 1);
|
|
11720
11777
|
const trimmedBeforePipe = beforePipe.trimEnd();
|
|
11721
11778
|
const spacesBeforePipeLength = beforePipe.length - trimmedBeforePipe.length;
|
|
11722
|
-
const
|
|
11723
|
-
const newSpacesLength = expected - widthBeforePipe;
|
|
11779
|
+
const newSpacesLength = expected - getTextWidth(trimmedBeforePipe);
|
|
11724
11780
|
const minTrailingSpaceWidth = table.isNeedSpaceBetweenContentAndTrailingPipe(pipeIndex) ? 1 : 0;
|
|
11725
11781
|
if (newSpacesLength < minTrailingSpaceWidth) {
|
|
11726
11782
|
const edit = fixRemoveSpacesFromLeadingSpaces(Math.abs(newSpacesLength) + minTrailingSpaceWidth);
|
|
@@ -11736,7 +11792,8 @@ var table_pipe_alignment_default = createRule("table-pipe-alignment", {
|
|
|
11736
11792
|
if (!cell.leadingPipe || pipeIndex === 0) return null;
|
|
11737
11793
|
const content = cell.type === "delimiter" ? cell.delimiter : cell.content;
|
|
11738
11794
|
if (!content) return null;
|
|
11739
|
-
const
|
|
11795
|
+
const leadingPipeEndLoc = sourceCode.getLocFromIndex(cell.leadingPipe.range[1]);
|
|
11796
|
+
const newSpacesLength = getTextWidth(sourceCode.lines[leadingPipeEndLoc.line - 1], leadingPipeEndLoc.column - 1, sourceCode.getLocFromIndex(content.range[0]).column - 1) - removeSpaceLength;
|
|
11740
11797
|
if (newSpacesLength < (table.isNeedSpaceBetweenLeadingPipeAndContent(pipeIndex - 1) ? 1 : 0)) return null;
|
|
11741
11798
|
return fixer.replaceTextRange([cell.leadingPipe.range[1], content.range[0]], " ".repeat(newSpacesLength));
|
|
11742
11799
|
}
|
|
@@ -12156,7 +12213,7 @@ var meta_exports = /* @__PURE__ */ __export({
|
|
|
12156
12213
|
version: () => version
|
|
12157
12214
|
});
|
|
12158
12215
|
const name = "eslint-plugin-markdown-preferences";
|
|
12159
|
-
const version = "0.
|
|
12216
|
+
const version = "0.36.0";
|
|
12160
12217
|
|
|
12161
12218
|
//#endregion
|
|
12162
12219
|
//#region src/language/extensions/micromark-custom-container.ts
|
|
@@ -12504,7 +12561,7 @@ function importCodeSnippetFromMarkdown() {
|
|
|
12504
12561
|
* Parse Extended Markdown to MDAST.
|
|
12505
12562
|
*/
|
|
12506
12563
|
function parseExtendedMarkdown(code) {
|
|
12507
|
-
|
|
12564
|
+
return fromMarkdown(code, {
|
|
12508
12565
|
extensions: [
|
|
12509
12566
|
gfm(),
|
|
12510
12567
|
frontmatter(["yaml", "toml"]),
|
|
@@ -12519,8 +12576,7 @@ function parseExtendedMarkdown(code) {
|
|
|
12519
12576
|
customContainerFromMarkdown(),
|
|
12520
12577
|
importCodeSnippetFromMarkdown()
|
|
12521
12578
|
]
|
|
12522
|
-
};
|
|
12523
|
-
return fromMarkdown(code, options);
|
|
12579
|
+
});
|
|
12524
12580
|
}
|
|
12525
12581
|
|
|
12526
12582
|
//#endregion
|