aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2023-12-16 20:30:08 +0800
committer苏向夜 <fu050409@163.com>2023-12-16 20:30:08 +0800
commit18842db3782ff1bbcdd3281f1efdaf0a8ca98e0c (patch)
treec2273b5dd49b59cd4766d29e350e0cbf40bd839a /src
parent8931736c9eb5fc8c5fe2eb8d6eca630b22fba5c9 (diff)
downloadinfini-18842db3782ff1bbcdd3281f1efdaf0a8ca98e0c.tar.gz
infini-18842db3782ff1bbcdd3281f1efdaf0a8ca98e0c.zip
:sparkles: 新增注册控制类
Diffstat (limited to 'src')
-rw-r--r--src/infini/register.py49
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())