diff --git a/docs/code_snippets/dividing_lines_example_sample.py b/docs/code_snippets/dividing_lines_example_sample.py new file mode 100644 index 0000000..c262342 --- /dev/null +++ b/docs/code_snippets/dividing_lines_example_sample.py @@ -0,0 +1,14 @@ +from argenta import App +from argenta.app import StaticDividingLine, DynamicDividingLine + +# Создание статической линии из символов "=" длиной 40 +static_line = StaticDividingLine(unit_part="=", length=40) + +# Создание динамической линии из символов "*" +dynamic_line = DynamicDividingLine(unit_part="*") + +# Приложение со статической линией +app_with_static_line = App(dividing_line=static_line) + +# Приложение с динамической линией (поведение по умолчанию, но с кастомным символом) +app_with_dynamic_line = App(dividing_line=dynamic_line) \ No newline at end of file diff --git a/docs/root/api/app/dividing_lines.rst b/docs/root/api/app/dividing_lines.rst index f7e644d..e5f6110 100644 --- a/docs/root/api/app/dividing_lines.rst +++ b/docs/root/api/app/dividing_lines.rst @@ -9,7 +9,7 @@ Dividing Lines ---- Класс ``StaticDividingLine`` --------------------------- +----------------------------- ``StaticDividingLine`` — это класс, который создает разделительную линию **фиксированной** длины. Длина и символ-заполнитель задаются при инициализации объекта. Этот тип линии полезен, когда вам нужен предсказуемый и унифицированный внешний вид интерфейса, независимо от содержимого вывода. @@ -27,7 +27,7 @@ Dividing Lines ----- Класс ``DynamicDividingLine`` ---------------------------- +------------------------------ ``DynamicDividingLine`` представляет собой более "умный" подход. Этот класс создает линию, длина которой **динамически** подстраивается под самую длинную строку, выведенную в консоль, в рамках выполнения одной команды. Это достигается за счет механизма перехвата `stdout`. В результате разделительные линии всегда идеально обрамляют выводимый контент, что выглядит очень аккуратно. @@ -45,37 +45,31 @@ Dividing Lines .. warning:: Обязательно почитайте про нюансы использования динамических линий и перехвата ``stdout`` в :ref:`этом разделе`. +----- + Назначение и использование -------------------------- -Выбор между статической и динамической линией зависит от ваших потребностей в конкретном приложении или даже для конкретного `Router`. +Выбор между статической и динамической линией зависит от ваших потребностей в конкретном приложении или даже для конкретного ``Router``-а. + +* **StaticDividingLine** идеально подходит, если: -* **`StaticDividingLine`** идеально подходит, если: * Вам нужен строгий, консистентный дизайн. - * Вы используете роутеры с отключенным перехватом `stdout` (`disable_redirect_stdout=True`), так как в этом случае динамическое вычисление длины невозможно. + * Вы используете роутеры с отключенным перехватом ``stdout`` (``disable_redirect_stdout=True``), так как в этом случае динамическое вычисление длины невозможно. + +* **DynamicDividingLine** (используется по умолчанию) является предпочтительным выбором, если: -* **`DynamicDividingLine`** (используется по умолчанию) является предпочтительным выбором, если: * Вы хотите, чтобы интерфейс выглядел аккуратно и адаптивно. * Вывод ваших команд имеет разную длину, и вы хотите, чтобы рамки всегда соответствовали контенту. + * В ваших хэндлерах нет ожидающих ``io`` операций. -Тип разделительной линии для всего приложения задается при инициализации `App` через параметр `dividing_line`. +Тип разделительной линии для всего приложения задается при инициализации ``App`` через параметр ``dividing_line``. + +----- Пример конфигурации -------------------- -.. code-block:: python - - from argenta.app import App - from argenta.app.dividing_line.models import StaticDividingLine, DynamicDividingLine - - # Создание статической линии из символов "=" длиной 40 - static_line = StaticDividingLine(unit_part="=", length=40) - - # Создание динамической линии из символов "*" - dynamic_line = DynamicDividingLine(unit_part="*") - - # Приложение со статической линией - app_with_static_line = App(dividing_line=static_line) - - # Приложение с динамической линией (поведение по умолчанию, но с кастомным символом) - app_with_dynamic_line = App(dividing_line=dynamic_line) +.. literalinclude:: ../../../code_snippets/dividing_lines_example_sample.py + :language: python + :linenos: