summaryrefslogtreecommitdiff
path: root/htmtl/expression_modifier.py
blob: 69d6a86c2b0241f3fde8bb3a00f4d6d8878d4987 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from abc import abstractmethod, ABC
from typing import Any


class ExpressionModifier(ABC):
    name: str

    @abstractmethod
    def modify(self, value: Any, opts: list[Any]) -> Any:
        pass


def modifier(name: str):
    def wrapper(cls: type[ExpressionModifier]):
        cls.name = name

        return cls

    return wrapper