2025-10-26 19:48:02 +01:00

66 lines
1.7 KiB
Python

# 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