@@ -260,12 +260,12 @@ export class _Tokenizer {
260
260
261
261
// Get next list item
262
262
const itemRegex = new RegExp ( `^( {0,3}${ bull } )((?:[\t ][^\\n]*)?(?:\\n|$))` ) ;
263
- let raw = '' ;
264
- let itemContents = '' ;
265
263
let endsWithBlankLine = false ;
266
264
// Check if current bullet point can start a new List Item
267
265
while ( src ) {
268
266
let endEarly = false ;
267
+ let raw = '' ;
268
+ let itemContents = '' ;
269
269
if ( ! ( cap = itemRegex . exec ( src ) ) ) {
270
270
break ;
271
271
}
@@ -279,21 +279,22 @@ export class _Tokenizer {
279
279
280
280
let line = cap [ 2 ] . split ( '\n' , 1 ) [ 0 ] . replace ( / ^ \t + / , ( t : string ) => ' ' . repeat ( 3 * t . length ) ) ;
281
281
let nextLine = src . split ( '\n' , 1 ) [ 0 ] ;
282
+ let blankLine = ! line . trim ( ) ;
282
283
283
284
let indent = 0 ;
284
285
if ( this . options . pedantic ) {
285
286
indent = 2 ;
286
287
itemContents = line . trimStart ( ) ;
288
+ } else if ( blankLine ) {
289
+ indent = cap [ 1 ] . length + 1 ;
287
290
} else {
288
291
indent = cap [ 2 ] . search ( / [ ^ ] / ) ; // Find first non-space char
289
292
indent = indent > 4 ? 1 : indent ; // Treat indented code blocks (> 4 spaces) as having only 1 indent
290
293
itemContents = line . slice ( indent ) ;
291
294
indent += cap [ 1 ] . length ;
292
295
}
293
296
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
297
298
raw += nextLine + '\n' ;
298
299
src = src . substring ( nextLine . length + 1 ) ;
299
300
endEarly = true ;
@@ -404,8 +405,8 @@ export class _Tokenizer {
404
405
}
405
406
406
407
// 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 ( ) ;
409
410
list . raw = list . raw . trimEnd ( ) ;
410
411
411
412
// Item child tokens handled here at end because we needed to have the final item to trim it first
0 commit comments