Files
Argenta/docs/root/api/app/dividing_lines.rst
T
2025-11-21 21:09:29 +03:00

66 lines
3.5 KiB
ReStructuredText

.. _root_api_app_dividing_lines:
Dividing Lines
==============
Разделительные линии в ``Argenta`` используются для визуального структурирования вывода и отделения блоков информации друг от друга. Библиотека предлагает два типа линий: статическую и динамическую.
----
``StaticDividingLine``
-----------------------------
``StaticDividingLine`` создаёт разделительную линию **фиксированной** длины. Этот тип линии полезен для создания предсказуемого и унифицированного интерфейса.
.. code-block:: python
:linenos:
def __init__(self, unit_part: str = "-", *,
length: int = 25) -> None
Создаёт экземпляр статической разделительной линии.
* ``unit_part``: Символ для построения линии (учитывается только первый символ). По умолчанию: ``-``.
* ``length``: Фиксированная длина линии. По умолчанию: ``25``.
-----
``DynamicDividingLine``
------------------------------
``DynamicDividingLine`` создаёт линию, длина которой **динамически** подстраивается под самую длинную строку в выводе команды. Это требует перехвата ``stdout``, в результате чего разделители идеально обрамляют выводимый контент.
.. code-block:: python
:linenos:
__init__(self, unit_part: str = "-") -> None
Создаёт экземпляр динамической разделительной линии.
* ``unit_part``: Символ для построения линии. По умолчанию: ``-``.
Длина вычисляется автоматически и не задаётся при инициализации.
.. warning::
Обязательно почитайте про нюансы использования динамических линий и перехвата ``stdout`` в :ref:`этом разделе<root_redirect_stdout>`.
-----
Назначение и использование
--------------------------
Выбор между статической и динамической линией зависит от ваших задач.
* **StaticDividingLine** идеально подходит, если:
* Вам нужен строгий и консистентный дизайн.
* Вы используете роутеры с отключённым перехватом ``stdout`` (``disable_redirect_stdout=True``), где динамическое вычисление длины невозможно.
* **DynamicDividingLine** (поведение по умолчанию) — предпочтительный выбор, если:
* Вы хотите, чтобы интерфейс был адаптивным.
* Вывод ваших команд имеет разную длину.
* В ваших обработчиках нет интерактивных операций ввода (например, ``input()``).
Тип разделителя для всего приложения задаётся при инициализации ``App`` через параметр ``dividing_line``.