Spaces:
Runtime error
Runtime error
File size: 845 Bytes
74b17e0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
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
|