diff options
| -rw-r--r-- | src/infini/register.py | 8 | ||||
| -rw-r--r-- | src/infini/router.py | 25 | ||||
| -rw-r--r-- | tests/test_core.py | 8 | ||||
| -rw-r--r-- | tests/test_handlers.py | 12 | ||||
| -rw-r--r-- | tests/test_interceptor.py | 4 |
5 files changed, 32 insertions, 25 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]) diff --git a/tests/test_core.py b/tests/test_core.py index 01d7ecb4..11a8c57d 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -4,7 +4,7 @@ from infini.handler import Handler from infini.input import Input from infini.interceptor import Interceptor from infini.output import Output -from infini.router import ContainsRouter, StartswithRouter +from infini.router import Contains, Startswith def test_core(): @@ -20,7 +20,7 @@ def test_core(): interceptor.interceptors = [ { "priority": 1, - "router": ContainsRouter("简律纯"), + "router": Contains("简律纯"), "handler": intercept_jianlvchun, } ] @@ -38,12 +38,12 @@ def test_core(): handler.handlers = [ { "priority": 2, - "router": StartswithRouter(".add"), + "router": Startswith(".add"), "handler": add, }, { "priority": 1, - "router": StartswithRouter("."), + "router": Startswith("."), "handler": cmd, }, ] diff --git a/tests/test_handlers.py b/tests/test_handlers.py index 00bb6f84..ee96cdab 100644 --- a/tests/test_handlers.py +++ b/tests/test_handlers.py @@ -1,7 +1,7 @@ from infini.handler import Handler from infini.input import Input from infini.output import Output -from infini.router import StartswithRouter +from infini.router import Startswith def test_handler(): @@ -22,12 +22,12 @@ def test_handler(): handler.handlers = [ { "priority": 2, - "router": StartswithRouter(".add"), + "router": Startswith(".add"), "handler": add, }, { "priority": 1, - "router": StartswithRouter("."), + "router": Startswith("."), "handler": cmd, }, ] @@ -56,12 +56,12 @@ def test_handler_block(): handler.handlers = [ { "priority": 2, - "router": StartswithRouter(".add"), + "router": Startswith(".add"), "handler": add, }, { "priority": 1, - "router": StartswithRouter("."), + "router": Startswith("."), "handler": cmd, }, ] @@ -88,7 +88,7 @@ def test_handler_interator(): handler.handlers = [ { "priority": 1, - "router": StartswithRouter(".add"), + "router": Startswith(".add"), "handler": add, }, ] diff --git a/tests/test_interceptor.py b/tests/test_interceptor.py index afb135e9..ffb03d56 100644 --- a/tests/test_interceptor.py +++ b/tests/test_interceptor.py @@ -1,7 +1,7 @@ from infini.input import Input from infini.interceptor import Interceptor from infini.output import Output -from infini.router import ContainsRouter +from infini.router import Contains def test_interceptor(): @@ -15,7 +15,7 @@ def test_interceptor(): interceptor.interceptors = [ { "priority": 1, - "router": ContainsRouter("简律纯"), + "router": Contains("简律纯"), "handler": intercept, } ] |
