Skip to content

Commit 15f3f15

Browse files
authored
fix: Code and heading after list without blank line (#2483)
1 parent 4844bc1 commit 15f3f15

9 files changed

+127
-0
lines changed

src/Tokenizer.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ export class Tokenizer {
226226
if (!endEarly) {
227227
const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))`);
228228
const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`);
229+
const fencesBeginRegex = new RegExp(`^( {0,${Math.min(3, indent - 1)}})(\`\`\`|~~~)`);
229230

230231
// Check if following lines should be included in List Item
231232
while (src) {
@@ -237,6 +238,16 @@ export class Tokenizer {
237238
line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');
238239
}
239240

241+
// End list item if found code fences
242+
if (fencesBeginRegex.test(line)) {
243+
break;
244+
}
245+
246+
// End list item if found start of new heading
247+
if (this.rules.block.heading.test(line)) {
248+
break;
249+
}
250+
240251
// End list item if found start of new bullet
241252
if (nextBulletRegex.test(line)) {
242253
break;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<ol>
2+
<li>abcd</li>
3+
</ol>
4+
<pre><code>if {
5+
6+
}
7+
</code></pre>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
1. abcd
2+
```
3+
if {
4+
}
5+
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<ol>
2+
<li>code with blankline</li>
3+
</ol>
4+
<pre><code>if {
5+
6+
}
7+
</code></pre>
8+
<ol start="2">
9+
<li>code and text</li>
10+
</ol>
11+
<pre><code>if {
12+
13+
}
14+
</code></pre>
15+
<p>text after fenced code block.</p>
16+
<ol start="3">
17+
<li>tilde</li>
18+
</ol>
19+
<pre><code>if {
20+
21+
22+
}
23+
</code></pre>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
1. code with blankline
2+
```
3+
if {
4+
5+
}
6+
```
7+
8+
2. code and text
9+
```
10+
if {
11+
12+
13+
}
14+
```
15+
text after fenced code block.
16+
17+
3. tilde
18+
~~~
19+
if {
20+
21+
}
22+
~~~
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<ol>
2+
<li><p>code with blankline</p>
3+
<pre><code>if {
4+
5+
}
6+
</code></pre>
7+
</li>
8+
<li><p>code and text</p>
9+
<pre><code>if {
10+
11+
}
12+
</code></pre>
13+
<p>text after fenced code block.</p>
14+
</li>
15+
<li><p>tilde</p>
16+
<pre><code>if {
17+
18+
19+
}
20+
</code></pre>
21+
</li>
22+
</ol>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
1. code with blankline
2+
```
3+
if {
4+
5+
}
6+
```
7+
8+
2. code and text
9+
```
10+
if {
11+
12+
13+
}
14+
```
15+
text after fenced code block.
16+
17+
3. tilde
18+
~~~
19+
if {
20+
21+
}
22+
~~~
23+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<h1 id="level1">level1</h1>
2+
<h2 id="level2">level2</h2>
3+
<h3 id="level3">level3</h3>
4+
<ul>
5+
<li>foo=bar</li>
6+
<li>foo2=bar2</li>
7+
</ul>
8+
<h3 id="level3-1">level3</h3>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# level1
2+
## level2
3+
### level3
4+
- foo=bar
5+
- foo2=bar2
6+
### level3

0 commit comments

Comments
 (0)