LINUX.ORG.RU

Стилизация консольных приложений на базе Symfony, Laravel, Yii и других фреймворков c помощью Termage

 , , , ,


1

1

Доброго Времени Суток!
Разрешите представить один свой небольшой опенсурс проект для консольных приложений - Termage (Terminal Mage)

Предыстория

В августе я начал работать над задачей, которая была на мне - это сделать CLI APP для функционала моей CMSки (https://github.com/flextype/flextype/issues/543).

Для реализации консольного приложения взял Symfony Сonsole. Функционал Symfony Сonsole показался мне крайне бедным и неудобным для стилизации и форматирования вывода.

Ранее я уже засматривался на проект от лиги выдающихся джентельменов - CLImate (https://climate.thephpleague.com) он богаче Symfony Сonsole по функционалу стилизации и форматированию, но по умолчанию не совместим с Symfony Сonsole, да и проект CLImate честно говоря давно уже не развивается и просто стоит на месте.

Принял решение сделать свою библиотеку, которая была бы совместима с Symfony Сonsole приложениями. Назвал свою библиотку CLIrad - но немного позже перименовал CLIrad в Termage (Terminal Mage).

Цель проекта Termage - это предоставить богатый и удобный функционал для стилизации и форматирования вывода любого, текста, html, markdown или логов в консольных приложениях любого фреймворка.

Вдохновители проекта Termage:

Подобных библиотек и с таким богатым функционалом для PHP нет! Termage будет PHP аналогом таких библиотек как Rich (PYTHON), SpectreConsole (.NET), PTerm(GO).

Termage ceгодня:

  • независимый от PHP фреймворка рендеринг.
  • 230+ страниц документации, которую я постоянно улучшаю.
  • 12 базовых элементов (Div, Span, Anchor, Alert, Chart, Paragraph и др)
  • 10 базовых стилей (Italic, Bold, Underline, Strikethrough и др)
  • fluent api, магические методы и pipeline классы.
  • шорткоды.

Репозиторий: https://github.com/termage/termage
Документация: https://digital.flextype.org/termage

Планы на ближайшее будущее:

  • улучшать документацию
  • улучшать покрытие тестов.
  • написать конвертор/парсер HTML в ANSI
  • написать конвертор/парсер MARKDOWN в ANSI
  • написать парсер логов
  • добавить новые элементы

Очень интересно.

Я, правда, не совсем понял, чего в доке

use Termage\alert;

// ...

echo (
    alert('Stay RAD!')->success().
    alert('Stay RAD!')->warning().
    alert('Stay RAD!')->info().
    alert('Stay RAD!')->danger().
    alert('Stay RAD!')->primary().
    alert('Stay RAD!')->secondary()
);

, когда потом используется функция.

fernandos ★★★
()
Ответ на: комментарий от fernandos

Спасибо за фидбек! Это ошибка в документации.

должно было быть

use function Termage\alert;

буду исправлять

Awilum
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.