.. _root_overriding_formatting: Стандартное форматирование ========================== По умолчанию в ``Argenta`` используется библиотека ``rich`` для вывода текстовых сообщений с расширенным форматированием в консоли. ``rich`` позволяет применять цвета, стили (жирный, курсив, подчеркнутый), составлять таблицы, выделять синтаксис кода и многое другое, что значительно улучшает визуальное восприятие текста. Вывод системных сообщений производится с помощью метода ``print`` объекта ``Console`` из библиотеки ``rich``, который обладает интерфейсом, совместимым со встроенной функцией ``print``. ------ Управление стандартным форматированием -------------------------------------- При создании экземпляра класса ``App`` предусмотрен параметр ``overridesystemmessages`` типа ``bool`` (по умолчанию ``False``), который позволяет включать или отключать стандартное форматирование системных сообщений. Если установить этот флаг в ``True``, стандартное форматирование, применяемое по умолчанию (например, стилизация текста и ASCII-арт), будет отключено, и системные сообщения будут выводиться в "сыром" виде, без дополнительных стилей. Приветственное и прощальное сообщения -------------------------------------- Приветственное (``initialmessage``) и прощальное (``farewellmessage``) сообщения по умолчанию формируются как ASCII-графика с помощью библиотеки ``art``. В частности, используется функция ``text2art``, которая преобразует обычный текст в стилизованное ASCII-арт изображение. .. warning:: Библиотека ``art`` ориентирована на работу с ASCII-символами и **не поддерживает корректный вывод кириллицы**. Это приводит к искажению или некорректному отображению символов русского и других кириллических алфавитов. Если ваше приветственное сообщение содержит кириллицу, рекомендуется отключить стандартное форматирование с помощью ``overridesystemmessages=True`` или использовать только латинские символы. Кастомизация вывода ------------------- Для полной замены логики вывода сообщений в конструкторе ``App`` доступен параметр ``printfunc``. * **printfunc**: ``Printer`` (Callable) Этот параметр позволяет передать любую вызываемую сущность (например, функцию), которая будет использоваться для вывода всех системных сообщений. По умолчанию это обертка вокруг ``rich.console.Console().print``. Вы можете передать сюда свою функцию, чтобы, например, логировать вывод в файл или отправлять его по сети. Пример использования -------------------- .. code-block:: python from argenta import App def custom_print_function(text: str) -> None: """Простая пользовательская функция вывода с префиксом.""" print(f"MOЙ ВЫВОД: {text}") # Инициализация приложения с отключенным форматированием по умолчанию # и собственной функцией вывода. app = App( initialmessage="Moe Prilojenie", overridesystemmessages=True, printfunc=custom_print_function, ) # При запуске `initialmessage` будет выведено через `custom_print_function` # без преобразования в ASCII-арт и без стилей `rich`. # app.run()