Some refactors on LabelledString

This commit is contained in:
YishiMichael 2022-04-06 23:16:59 +08:00
parent 93f8d3f1ca
commit 18963fb9fe
No known key found for this signature in database
GPG key ID: EC615C0C5A86BC80

View file

@ -113,24 +113,14 @@ class LabelledString(_StringSVG):
def get_substr(self, span: Span) -> str: def get_substr(self, span: Span) -> str:
return self.string[slice(*span)] return self.string[slice(*span)]
def handle_regex_method(func): def finditer(self, pattern, **kwargs):
def wrapper(self, pattern, pos=0, endpos=9223372036854775807): return re.compile(pattern).finditer(self.string, **kwargs)
return func()(
re.compile(pattern), self.string, pos=pos, endpos=endpos
)
return wrapper
@handle_regex_method def search(self, pattern, **kwargs):
def finditer(): return re.compile(pattern).search(self.string, **kwargs)
return re.Pattern.finditer
@handle_regex_method def match(self, pattern, **kwargs):
def search(): return re.compile(pattern).match(self.string, **kwargs)
return re.Pattern.search
@handle_regex_method
def match():
return re.Pattern.match
def find_spans(self, pattern: str) -> list[Span]: def find_spans(self, pattern: str) -> list[Span]:
return [match_obj.span() for match_obj in self.finditer(pattern)] return [match_obj.span() for match_obj in self.finditer(pattern)]