Added utils to make regexps and iterators that check for last element

This commit is contained in:
Christian Risi 2025-09-30 13:33:12 +02:00
parent 2fe1ce9e9a
commit 7020c9e683
2 changed files with 36 additions and 0 deletions

View File

@ -0,0 +1,27 @@
from collections import deque
from typing import Generator, TypeVar
T1 = TypeVar("T1")
T2 = TypeVar("T2")
T3 = TypeVar("T3")
def iterator_with_checks(
generator: Generator[T1, T2, T3],
) -> Generator[tuple[T1, bool], T2, T3]:
# Here we can ignore to catch stop iteration
# we will propagate it
last_element = next(generator)
while True:
RETURN_ELEMENT = last_element
try:
element = next(generator)
last_element = element
yield (RETURN_ELEMENT, False)
except StopIteration:
yield (RETURN_ELEMENT, True)
break

View File

@ -0,0 +1,9 @@
import re
def special_regex_maker(special_tokens: list[str]) -> re.Pattern:
REGEX_STR = "|".join(special_tokens)
return re.compile(REGEX_STR)