/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
src/liquidcode/routing/route_class.py
33 строки
1 KB
User
0.4.7 - Рефакторинг routing.py в пакет
05 июл 2026, 17:09
05 июл 2026, 17:09
97bff95
Код
Авторство
О чём код?
import re from typing import Any, Callable, Dict, List, Optional, Pattern class Route: def __init__( self, path: str, methods: List[str], controller: Any, group_middlewares: Optional[List[Callable]] = None, ) -> None: self.path = path self.methods = [m.upper() for m in methods] self.controller = controller self.group_middlewares = group_middlewares or [] self.pattern: Pattern = self._compile_pattern(path) def _compile_pattern(self, path: str) -> Pattern: def repl(match: re.Match) -> str: name = match.group(1) pattern = match.group(2) or '[^/]+' return f'(?P<{name}>{pattern})' regex = re.sub(r'\{([a-zA-Z_][a-zA-Z0-9_]*)(?::([^}]+))?\}', repl, path) regex = f'^{regex}$' return re.compile(regex) def match(self, path: str) -> Optional[Dict[str, str]]: match = self.pattern.match(path) if match: return match.groupdict() return None