Skip to content

Commit 36a428b

Browse files
authored
👌 Improve performance of skipSpaces/skipChars (#271)
Don't compute src length on every iteration
1 parent f52249e commit 36a428b

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

markdown_it/rules_block/state_block.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,12 @@ def skipEmptyLines(self, from_pos: int) -> int:
147147

148148
def skipSpaces(self, pos: int) -> int:
149149
"""Skip spaces from given position."""
150-
while pos < len(self.src):
151-
if not isStrSpace(self.src[pos]):
150+
while True:
151+
try:
152+
current = self.src[pos]
153+
except IndexError:
154+
break
155+
if not isStrSpace(current):
152156
break
153157
pos += 1
154158
return pos
@@ -165,16 +169,24 @@ def skipSpacesBack(self, pos: int, minimum: int) -> int:
165169

166170
def skipChars(self, pos: int, code: int) -> int:
167171
"""Skip character code from given position."""
168-
while pos < len(self.src):
169-
if self.srcCharCode[pos] != code:
172+
while True:
173+
try:
174+
current = self.srcCharCode[pos]
175+
except IndexError:
176+
break
177+
if current != code:
170178
break
171179
pos += 1
172180
return pos
173181

174182
def skipCharsStr(self, pos: int, ch: str) -> int:
175183
"""Skip character string from given position."""
176-
while pos < len(self.src):
177-
if self.src[pos] != ch:
184+
while True:
185+
try:
186+
current = self.src[pos]
187+
except IndexError:
188+
break
189+
if current != ch:
178190
break
179191
pos += 1
180192
return pos

0 commit comments

Comments
 (0)