# standard python from typing import List from dataclasses import dataclass from dataclasses import field # rich from rich.highlighter import ISO8601Highlighter from rich.highlighter import JSONHighlighter from .communication import Swedish_Phone_Number_Highlighter from .communication import Email_Highlighter from .html4 import HTML4_Highlighter from .misc import Rainbow_Highlighter class Highlighter: def __init__(self, name, highlighter, *args, **kwargs): self.name = name self.highlighter = highlighter def __call__(self, *args, **kwargs): self.highlighter(*args, **kwargs) @dataclass class Highlight_Manager: highlighters: List[Highlighter] current: int = field(repr=False, default=0) def this(self, name): for hl in self.highlighters: if hl.name == name: return hl return def _hl_generator(self): for x in self.highlighters: yield x def __iter__(self): return self._hl_generator() def __next__(self): if len(self.highlighters) < self.current: self.current = self.current + 1 else: self.current = 0 raise StopIteration def __call__(self, name): return self.this(name) def get_highlighter(name): highlighters = Highlight_Manager([ Highlighter("mobilnr", Swedish_Phone_Number_Highlighter()), Highlighter("html4", HTML4_Highlighter()), Highlighter("rainbow", Rainbow_Highlighter()), Highlighter("email", Email_Highlighter()), Highlighter("date_iso8601", ISO8601Highlighter()), Highlighter("json", JSONHighlighter()), ]) for x in highlighters: if x.name == name: return x return None