Skip to content

Commit 8b28f3d

Browse files
committed
👌 IMPROVE: emphasis parsing performance
Implements: markdown-it/markdown-it@83b0575, and strikethrough fix: markdown-it/markdown-it@c9dd942
1 parent d96a282 commit 8b28f3d

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

markdown_it/rules_inline/balance_pairs.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,23 @@ def processDelimiters(state: StateInline, delimiters, *args):
2828
openersBottom[closer.marker] = [-1, -1, -1]
2929

3030
minOpenerIdx = openersBottom[closer.marker][closer.length % 3]
31-
newMinOpenerIdx = -1
3231

3332
openerIdx = closerIdx - closer.jump - 1
3433

34+
# avoid crash if `closer.jump` is pointing outside of the array,
35+
# e.g. for strikethrough
36+
if openerIdx < -1:
37+
openerIdx = -1
38+
39+
newMinOpenerIdx = openerIdx
40+
3541
while openerIdx > minOpenerIdx:
3642
opener = delimiters[openerIdx]
3743

3844
if opener.marker != closer.marker:
3945
openerIdx -= opener.jump + 1
4046
continue
4147

42-
if newMinOpenerIdx == -1:
43-
newMinOpenerIdx = openerIdx
44-
4548
if opener.open and opener.end < 0:
4649

4750
isOddMatch = False

markdown_it/rules_inline/strikethrough.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def tokenize(state: StateInline, silent: bool):
3535
**{
3636
"marker": marker,
3737
"length": 0, # disable "rule of 3" length checks meant for emphasis
38-
"jump": i,
38+
"jump": i // 2, # for `~~` 1 marker = 2 characters,
3939
"token": len(state.tokens) - 1,
4040
"end": -1,
4141
"open": scanned.can_open,

tests/test_port/fixtures/strikethrough.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,10 @@ Coverage: single tilde
127127
.
128128
<p>~a~</p>
129129
.
130+
131+
Regression test for #742:
132+
.
133+
-~~~~;~~~~~~
134+
.
135+
<p>-<s><s>;</s></s>~~</p>
136+
.

0 commit comments

Comments
 (0)