.. _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:`этом разделе`. ----- Назначение и использование -------------------------- Выбор между статической и динамической линией зависит от ваших задач. * **StaticDividingLine** идеально подходит, если: * Вам нужен строгий и консистентный дизайн. * Вы используете роутеры с отключённым перехватом ``stdout`` (``disable_redirect_stdout=True``), где динамическое вычисление длины невозможно. * **DynamicDividingLine** (поведение по умолчанию) — предпочтительный выбор, если: * Вы хотите, чтобы интерфейс был адаптивным. * Вывод ваших команд имеет разную длину. * В ваших обработчиках нет интерактивных операций ввода (например, ``input()``). Тип разделителя для всего приложения задаётся при инициализации ``App`` через параметр ``dividing_line``.