tflori/hugga

用于控制台应用的库,具有输入和输出处理功能

v1.2.0 2023-06-01 20:11 UTC

README

.github/workflows/push.yml Test Coverage Maintainability Latest Stable Version Total Downloads License

PHP库,用于控制台应用。它支持消息和表格的格式化,以及具有选择的输入处理。

安装

像所有我的库一样:仅通过composer

$ composer require tflori/hugga

基本用法

<?php

$console = new Hugga\Console;
$name = $console->ask('What is your name?');
$console->line('${fg:white;bg:white;bold}Nice to meet you ' . $name . '!');

$console->line('You will see this', Hugga\Console::WEIGHT_NORMAL);
$console->line('You will not see this', Hugga\Console::WEIGHT_LOWER);
$console->increaseVerbosity();
$console->line('No you can see this', Hugga\Console::WEIGHT_LOWER);
$console->line('But this is just a debug message', Hugga\Console::WEIGHT_DEBUG);
//$console->setVerbosity(Hugga\Console::WEIGHT_DEBUG);
//$console->debug(
//    ['key' => 'value', 'recursive' => ['string', 42, null, true]],
//    Hugga\Console::DEBUG_PRETTY ^ Hugga\Console::DEBUG_COLOR
// );

文档

目前还没有其他文档,只有这个API参考。也可以查看examples/test.php示例,并尝试使用php vendor/tflori/hugga/examples/test.php运行它们。

此外,还有一个示例,展示如何使用现有功能创建分页表格,见examples/paginated-table.php

功能

一些功能仍在计划中,但许多功能已可用,足以开始使用并替换symfony/console。

输出处理

  • 绘图:一种机制,使输出保持在底部,同时其他输出在上部打印(时钟、进度条等)
  • 加权输出:仅输出,hugga将处理用户是否希望看到它(详细程度)
  • 格式化输出:使用组合表达式轻松格式化(例如:${red;bold}text${r}
  • 输出表格:易于使用的表格,具有许多格式化功能
    • 预定义格式:配置一次格式,以后所有表格都会使用
    • 边框:启用或禁用边框(内部边框:行之间)
    • 填充:单元格内的左右填充
    • 重复标题:每第n行重复标题
    • 标题样式:定义用于标题的样式
  • 进度条:具有8个步骤(utf-8)和其他格式化功能的平滑进度条
    • 不确定:在边缘之间旋转的throbber
    • 更新率:而不是定义进度条应该在多少步骤后更新(symfony/console),您定义在重绘之前需要经过多少时间
    • 字符:更改进度条使用的字符
    • throbber:更改用于不确定进度条的throbber
    • 浮点步骤:使用浮点数字

输入处理

  • InputObserver:直接访问键盘,无需将输出写入控制台
  • 编辑行修复:编辑行(read line的替代品)不能读取单个按键
  • ReadLine:如果可用,使用read line从stdin读取
  • 读取字符:读取特定数量的字符(多字节安全)
  • 读取直到:读取输入,直到出现特定字符串(例如:\n.\n
  • 简单问题:具有默认值的简单问题
  • 确认:具有y(是)和n(否)选择的简单问题(字符可以更改)
  • 选择:选择列表中的选项的问题
    • 默认为交互式:使用光标键选择,并使用InputObserver选择
    • 回车键:返回键而不是值(关联数组默认值)
    • 限制:更改可见选项的限制(交互式版本)

计划中的功能

  • 调试输出:以高亮显示并以人类可读的格式输出变量
  • 交互式表格:使用光标键滚动表格并分页