Skip to content

Commit d28e4c6

Browse files
authored
fix: fix list item with blank first line (#3351)
* fix: fix list item with blank first line * move blankline
1 parent b17ff8b commit d28e4c6

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

src/Tokenizer.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,12 @@ export class _Tokenizer {
260260

261261
// Get next list item
262262
const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`);
263-
let raw = '';
264-
let itemContents = '';
265263
let endsWithBlankLine = false;
266264
// Check if current bullet point can start a new List Item
267265
while (src) {
268266
let endEarly = false;
267+
let raw = '';
268+
let itemContents = '';
269269
if (!(cap = itemRegex.exec(src))) {
270270
break;
271271
}
@@ -279,21 +279,22 @@ export class _Tokenizer {
279279

280280
let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t: string) => ' '.repeat(3 * t.length));
281281
let nextLine = src.split('\n', 1)[0];
282+
let blankLine = !line.trim();
282283

283284
let indent = 0;
284285
if (this.options.pedantic) {
285286
indent = 2;
286287
itemContents = line.trimStart();
288+
} else if (blankLine) {
289+
indent = cap[1].length + 1;
287290
} else {
288291
indent = cap[2].search(/[^ ]/); // Find first non-space char
289292
indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
290293
itemContents = line.slice(indent);
291294
indent += cap[1].length;
292295
}
293296

294-
let blankLine = false;
295-
296-
if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
297+
if (blankLine && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
297298
raw += nextLine + '\n';
298299
src = src.substring(nextLine.length + 1);
299300
endEarly = true;
@@ -404,8 +405,8 @@ export class _Tokenizer {
404405
}
405406

406407
// Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
407-
list.items[list.items.length - 1].raw = raw.trimEnd();
408-
(list.items[list.items.length - 1]).text = itemContents.trimEnd();
408+
list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();
409+
list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();
409410
list.raw = list.raw.trimEnd();
410411

411412
// Item child tokens handled here at end because we needed to have the final item to trim it first
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<ol>
2+
<li></li>
3+
</ol>
4+
<p>Monday
5+
2.
6+
Tuesday
7+
3.
8+
Wednesday</p>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
1.
2+
Monday
3+
2.
4+
Tuesday
5+
3.
6+
Wednesday

0 commit comments

Comments
 (0)