mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
docs
This commit is contained in:
+14
-14
@@ -3,9 +3,9 @@
|
||||
Router
|
||||
=============
|
||||
|
||||
Объект ``Router`` является фундаментальным строительным блоком для организации логики в приложении ``Argenta``. Его основная задача — группировать связанные команды и их обработчики. Каждый роутер представляет собой логический контейнер для определенного набора функциональности.
|
||||
``Router`` — это основной строительный блок для организации логики в приложении. Его задача — группировать связанные команды и их обработчики. Каждый роутер представляет собой логический контейнер для определённого набора функций.
|
||||
|
||||
Например, в приложении для управления пользователями один роутер может отвечать за команды, связанные с аутентификацией (``login``, ``logout``), а другой — за операции с профилем (``profile show``, ``profile edit``).
|
||||
Например, в приложении для управления пользователями один роутер может отвечать за аутентификацию (``login``, ``logout``), а другой — за операции с профилем (``profile-show``, ``profile-edit``).
|
||||
|
||||
-----
|
||||
|
||||
@@ -18,23 +18,23 @@ Router
|
||||
__init__(self, title: str | None = None,
|
||||
disable_redirect_stdout: bool = False) -> None
|
||||
|
||||
Создаёт новый экземпляр маршрутизатора.
|
||||
Создаёт новый экземпляр роутера.
|
||||
|
||||
* ``title`` : Необязательный заголовок для группы команд, которые регистрируются в этом роутере. Этот заголовок будет отображаться в списке доступных команд, помогая пользователю ориентироваться.
|
||||
* ``disable_redirect_stdout`` : Если установлено в ``True``, отключает механизм перехвата стандартного вывода (``stdout``) для всех команд этого роутера. Это необходимо для команд, которые требуют интерактивного ввода от пользователя (например, с помощью ``input()``). При отключении перехвата вывода автоматически используется статическая разделительная линия. Подробнее в :ref:`соответствующем разделе <root_redirect_stdout>`
|
||||
* ``title``: Необязательный заголовок для группы команд. Отображается в списке доступных команд, помогая пользователю ориентироваться.
|
||||
* ``disable_redirect_stdout``: Если ``True``, отключает перехват ``stdout`` для всех команд этого роутера. Это необходимо для интерактивных команд (например, с ``input()``). При отключении перехвата автоматически используется статическая разделительная линия. Подробнее см. в разделе :ref:`Переопределение стандартного вывода <root_redirect_stdout>`.
|
||||
|
||||
-----
|
||||
|
||||
Регистрация команд
|
||||
------------------
|
||||
|
||||
Для регистрации новой команды и привязки к ней функции-обработчика используется декоратор ``@command``.
|
||||
Для регистрации команды и привязки к ней обработчика используется декоратор ``@command``.
|
||||
|
||||
.. py:method:: @command(self, command: Command | str)
|
||||
|
||||
Декоратор для регистрации функции как обработчика для указанной команды.
|
||||
Декоратор для регистрации функции как обработчика команды.
|
||||
|
||||
:param command: Экземпляр класса ``argenta.command.Command``, описывающий триггер, флаги и описание команды. Также может быть просто строкой, которая будет являться триггером, в этом случае нет возможности настроить флаги, описание и всё остальное.
|
||||
:param command: Экземпляр ``Command``, описывающий триггер, флаги и описание команды. Может быть строкой, которая станет триггером (без возможности настройки флагов и описания).
|
||||
|
||||
**Пример использования:**
|
||||
|
||||
@@ -51,27 +51,27 @@ Router
|
||||
|
||||
.. py:data:: system_router
|
||||
|
||||
Предопределенный экземпляр ``Router``, который содержит базовые системные команды. По умолчанию в него включена команда выхода из приложения (обычно **exit**). Он имеет заголовок **"System points:"**, который можно переопределить в инстансе приложения -> ``App``.
|
||||
Предопределённый экземпляр ``Router`` с базовыми системными командами (по умолчанию — команда выхода). Имеет заголовок **«System points:»**, который можно переопределить в ``App``.
|
||||
|
||||
Вы можете добавлять свои команды в этот роутер, для этого импортируйте ``argenta.router.defaults.system_router`` и декорируйте необходимые хэндлеры его методом.
|
||||
Вы можете добавлять свои команды в этот роутер. Для этого импортируйте ``argenta.router.defaults.system_router`` и используйте его декоратор ``@command``.
|
||||
|
||||
-----
|
||||
|
||||
Возможные исключения
|
||||
--------------------
|
||||
|
||||
При регистрации команд и флагов в ``Router`` могут возникнуть следующие исключения, сигнализирующие о некорректной конфигурации:
|
||||
При регистрации команд и флагов в ``Router`` могут возникнуть следующие исключения:
|
||||
|
||||
.. py:exception:: TriggerContainSpacesException
|
||||
|
||||
Выбрасывается, если триггер команды, передаваемый в ``Command``, содержит пробелы. Триггеры команд должны быть одним словом.
|
||||
Выбрасывается, если триггер команды в ``Command`` содержит пробелы. Триггеры должны быть одним словом.
|
||||
|
||||
**Неправильно:** ``Command("add user")``
|
||||
**Правильно:** ``Command("add-user")``
|
||||
|
||||
.. py:exception:: RepeatedFlagNameException
|
||||
|
||||
Возникает, если при определении флагов для одной команды были использованы дублирующиеся имена (как короткие, так и длинные). Каждое имя флага в рамках одной команды должно быть уникальным.
|
||||
Возникает, если при определении флагов для команды были использованы дублирующиеся имена. Имена флагов в рамках одной команды должны быть уникальны.
|
||||
|
||||
**Пример, вызывающий исключение:**
|
||||
|
||||
@@ -85,5 +85,5 @@ Router
|
||||
|
||||
.. py:exception:: RequiredArgumentNotPassedException
|
||||
|
||||
Это исключение возникает, если какой-либо обработчик команды не ожидает обязательный аргумент, которым является объект ответа(``Response``).
|
||||
Возникает, если обработчик команды не принимает обязательный аргумент ``Response``.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user