diff options
| author | 2023-12-16 20:30:08 +0800 | |
|---|---|---|
| committer | 2023-12-16 20:30:08 +0800 | |
| commit | 18842db3782ff1bbcdd3281f1efdaf0a8ca98e0c (patch) | |
| tree | c2273b5dd49b59cd4766d29e350e0cbf40bd839a | |
| parent | 8931736c9eb5fc8c5fe2eb8d6eca630b22fba5c9 (diff) | |
| download | infini-18842db3782ff1bbcdd3281f1efdaf0a8ca98e0c.tar.gz infini-18842db3782ff1bbcdd3281f1efdaf0a8ca98e0c.zip | |
:sparkles: 新增注册控制类
| -rw-r--r-- | src/infini/register.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/infini/register.py b/src/infini/register.py new file mode 100644 index 00000000..293b212e --- /dev/null +++ b/src/infini/register.py @@ -0,0 +1,49 @@ +from infini.exceptions import UnknownMessageEvent +from infini.handler import Handler +from infini.typing import Dict + + +import re + + +class Loader: + ... + + +class Register: + ... + + +class Events: + """事件集合""" + + _events: Dict[str, str] = {} + + def regist(self, name: str, output: str) -> None: + self._events[name.lower()] = output + + def process(self, name: str, **kwargs) -> str: + if string := self._events.get(name.lower()): + return self._format(string, **kwargs) + raise UnknownMessageEvent(f"事件[{name.lower()}]不存在!") + + def _format(self, string: str, **kwargs): + pattern = r"{(.*?)}" + values = re.findall(pattern, string) + for value in values: + kwarg = kwargs.get(value) + value = kwarg if kwarg else "" + string = re.sub(pattern, value, string) + return string + + +class Handlers: + """规则包业务集合""" + + _handlers: Dict[str, Handler] = {} + + def regist(self, name: str, handler: Handler) -> None: + self._handlers[name.lower()] = handler + + def match(self, name: str) -> Handler | None: + return self._handlers.get(name.lower()) |
