fix: fix list item with blank first line (#3351)

* fix: fix list item with blank first line

* move blankline
This commit is contained in:
Tony Brix 2024-07-03 17:04:17 -07:00 committed by GitHub
parent b17ff8be46
commit d28e4c65ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 22 additions and 7 deletions

View File

@ -260,12 +260,12 @@ export class _Tokenizer {
// Get next list item
const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`);
let raw = '';
let itemContents = '';
let endsWithBlankLine = false;
// Check if current bullet point can start a new List Item
while (src) {
let endEarly = false;
let raw = '';
let itemContents = '';
if (!(cap = itemRegex.exec(src))) {
break;
}
@ -279,11 +279,14 @@ export class _Tokenizer {
let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t: string) => ' '.repeat(3 * t.length));
let nextLine = src.split('\n', 1)[0];
let blankLine = !line.trim();
let indent = 0;
if (this.options.pedantic) {
indent = 2;
itemContents = line.trimStart();
} else if (blankLine) {
indent = cap[1].length + 1;
} else {
indent = cap[2].search(/[^ ]/); // Find first non-space char
indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
@ -291,9 +294,7 @@ export class _Tokenizer {
indent += cap[1].length;
}
let blankLine = false;
if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
if (blankLine && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
raw += nextLine + '\n';
src = src.substring(nextLine.length + 1);
endEarly = true;
@ -404,8 +405,8 @@ export class _Tokenizer {
}
// Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
list.items[list.items.length - 1].raw = raw.trimEnd();
(list.items[list.items.length - 1]).text = itemContents.trimEnd();
list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();
list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();
list.raw = list.raw.trimEnd();
// Item child tokens handled here at end because we needed to have the final item to trim it first

View File

@ -0,0 +1,8 @@
<ol>
<li></li>
</ol>
<p>Monday
2.
Tuesday
3.
Wednesday</p>

View File

@ -0,0 +1,6 @@
1.
Monday
2.
Tuesday
3.
Wednesday