Camil Ziane
init space
74b17e0
raw
history blame
845 Bytes
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Dict, Union, List
SLOT = Union[str, List[str], Dict[str, str]]
@dataclass
class Formatter(ABC):
slot: SLOT = ""
@abstractmethod
def apply(self, **kwargs) -> SLOT: ...
@dataclass
class EmptyFormatter(Formatter):
def apply(self, **kwargs) -> SLOT:
return self.slot
@dataclass
class StringFormatter(Formatter):
def apply(self, **kwargs) -> SLOT:
msg = ""
for name, value in kwargs.items():
if value is None:
msg = self.slot.split(':')[0] + ":"
return msg
if not isinstance(value, str):
raise RuntimeError("Expected a string, got {}".format(value))
msg = self.slot.replace("{{" + name + "}}", value, 1)
return msg