diff options
| author | 2024-01-27 22:27:41 +0800 | |
|---|---|---|
| committer | 2024-01-27 22:27:41 +0800 | |
| commit | 1d9a500b727e8879cdaeb9c378ac717001c56ccc (patch) | |
| tree | 58d3dd78970d2458372ac67353163f602c0cf017 /src | |
| parent | 69e46bfe4d5429f9c3eebb1747bd8e5290f7823b (diff) | |
| download | infini-1d9a500b727e8879cdaeb9c378ac717001c56ccc.tar.gz infini-1d9a500b727e8879cdaeb9c378ac717001c56ccc.zip | |
:sparkles: feat(router): supports alias router
Diffstat (limited to 'src')
| -rw-r--r-- | src/infini/register.py | 8 | ||||
| -rw-r--r-- | src/infini/router.py | 25 |
2 files changed, 20 insertions, 13 deletions
diff --git a/src/infini/register.py b/src/infini/register.py index 3be22343..391fcf63 100644 --- a/src/infini/register.py +++ b/src/infini/register.py @@ -1,6 +1,6 @@ from infini.input import Input from infini.output import Output -from infini.router import ContainsRouter, Router +from infini.router import Contains, Router from infini.typing import List, Dict, Any, Callable, RouterType from functools import wraps @@ -28,7 +28,7 @@ class Register: self.pre_interceptors.append( { "priority": priority, - "router": ContainsRouter(router) + "router": Contains(router) if isinstance(router, str) else router, "handler": wrapper, @@ -47,7 +47,7 @@ class Register: self.handlers.append( { "priority": priority, - "router": ContainsRouter(router) + "router": Contains(router) if isinstance(router, str) else router, "handler": wrapper, @@ -83,7 +83,7 @@ class Register: self.interceptors.append( { "priority": priority, - "router": ContainsRouter(router) + "router": Contains(router) if isinstance(router, str) else router, "handler": wrapper, diff --git a/src/infini/router.py b/src/infini/router.py index 1174721e..4b781ad9 100644 --- a/src/infini/router.py +++ b/src/infini/router.py @@ -1,23 +1,30 @@ +from infini.typing import Sequence, List + + class Router: - sign: str + signs: List[str] - def __init__(self, sign: str) -> None: - self.sign = sign + def __init__(self, sign: str, alias: Sequence[str] = []) -> None: + self.signs = [sign] + self.signs.extend(alias) def match(self, input: str) -> bool: - return self.sign == input.strip() + return any([input == sign for sign in self.signs]) -class StartswithRouter(Router): +class Startswith(Router): def match(self, input: str) -> bool: - return input.strip().startswith(self.sign) + input = input.strip() + return any([input.startswith(sign) for sign in self.signs]) -class ContainsRouter(Router): +class Contains(Router): def match(self, input: str) -> bool: - return self.sign in input.strip() + input = input.strip() + return any([sign in input for sign in self.signs]) class Endswith(Router): def match(self, input: str) -> bool: - return input.strip().endswith(self.sign) + input = input.strip() + return any([input.endswith(sign) for sign in self.signs]) |
