@@ -203,7 +203,7 @@ def _split_by_backtick(s: str) -> list[tuple[bool, str]]:
203
203
The second is the actual substring.
204
204
"""
205
205
substrings = []
206
- substr = ""
206
+ substr = [] # collect in a list, join into a string before adding to substrings
207
207
i = 0
208
208
parse_state = ParseState .DEFAULT
209
209
while i < len (s ):
@@ -214,24 +214,28 @@ def _split_by_backtick(s: str) -> list[tuple[bool, str]]:
214
214
# start of a backtick-quoted string
215
215
if parse_state == ParseState .DEFAULT :
216
216
if substr :
217
- substrings .append ((False , substr ))
218
- substr = char
217
+ substrings .append ((False , "" .join (substr )))
218
+
219
+ substr = [char ]
219
220
i += 1
220
221
parse_state = ParseState .IN_BACKTICK
221
222
continue
223
+
222
224
elif parse_state == ParseState .IN_BACKTICK :
223
225
# escaped backtick inside a backtick-quoted string
224
226
next_char = s [i + 1 ] if (i != len (s ) - 1 ) else None
225
227
if next_char == "`" :
226
- substr += char + next_char
228
+ substr .append (char )
229
+ substr .append (next_char )
227
230
i += 2
228
231
continue
232
+
229
233
# end of the backtick-quoted string
230
234
else :
231
- substr += char
232
- substrings .append ((True , substr ))
235
+ substr . append ( char )
236
+ substrings .append ((True , "" . join ( substr ) ))
233
237
234
- substr = ""
238
+ substr = []
235
239
i += 1
236
240
parse_state = ParseState .DEFAULT
237
241
continue
@@ -249,11 +253,11 @@ def _split_by_backtick(s: str) -> list[tuple[bool, str]]:
249
253
# end of a double-quoted string
250
254
elif (parse_state == ParseState .IN_DOUBLE_QUOTE ) and (s [i - 1 ] != "\\ " ):
251
255
parse_state = ParseState .DEFAULT
252
- substr += char
256
+ substr . append ( char )
253
257
i += 1
254
258
255
259
if substr :
256
- substrings .append ((False , substr ))
260
+ substrings .append ((False , "" . join ( substr ) ))
257
261
258
262
return substrings
259
263
0 commit comments