webbtj / clico
用于在命令行界面(CLI)中格式化和着色文本输出的表达性API
v0.1
2019-11-08 15:35 UTC
Requires
- php: ^7.2
This package is auto-updated.
Last update: 2024-09-09 02:47:05 UTC
README
命令行界面彩色输出
Clico是一个PHP包,它提供了一个表达性API来格式化CLI输出的文本。Clico提供了链式方法来设置文本的背景色和前景色、粗细以及其他文本装饰,如下划线和闪烁。
Clico还提供了用于格式化CLI输出的表格数据的函数。表格类还可以格式化每一行、每一列以及每个单元格中的文本。
Clico与框架无关,只需安装并使用提供的类即可。
完整API文档
完整的API文档可以在此处找到,但以下指南应该足以帮助大多数用户入门。源代码
安装
使用composer安装。
composer require webbtj/clico
用法
安装完成后,您可以在自己的代码中使用Text和Table类。
use Webbtj\Clico\Text;
use Webbtj\Clico\Table;
Text和Table类通过其__toString方法返回字符串。
使用Text
Text类提供了一些链式方法来更改CLI输出中文本的渲染。
颜色
black()- 将文本或背景色设置为黑色。blue()- 将文本或背景色设置为蓝色。cyan()- 将文本或背景色设置为青色。green()- 将文本或背景色设置为绿色。magenta()- 将文本或背景色设置为洋红色。red()- 将文本或背景色设置为红色。white()- 将文本或背景色设置为白色。yellow()- 将文本或背景色设置为黄色。
效果
b()、bold()、heavyWeight()、strong()- 使文本加粗。blink()、flash()- 使文本闪烁。dim()、lightWeight()、thin()- 使文本变淡(更暗)。hidden()、hide()- 使文本不可见。highlight()- 突出显示文本(反转背景色和前景色)。normal()、normalWeight()- 使文本正常粗细。u()、underline()- 在文本下加下划线。
背景/前景
默认情况下,正在操作前景(文本)颜色,但是您可以使用链式方法在更改背景色和前景色之间切换。切换到任意层会导致后续链式颜色方法影响该层。
background()- 切换到操作背景颜色。foreground()- 切换到操作前景颜色。
阴影
dark()- 使后续颜色方法使用其深色变体。darken()- 将当前设置的颜色(背景或前景)更改为其深色变体。light()- 使后续颜色方法使用其浅色变体。lighten()- 将当前设置的颜色(背景或前景)更改为其浅色变体。
工具
getText()- 返回纯文本(未装饰的文本)。length()- 返回未装饰的字符串长度。repeat(int $repeat)- 在渲染时将文本重复$repeat次。repeat()不会影响getText()或length()的输出。setDefault(bool $setAll)- 将当前设置的图层(背景或前景)设置为默认颜色。将$setAll = true用于更改两个图层。text(string $text)- 设置文本值。多次调用将覆盖之前设置的值。也可以将$text传递给构造函数。
示例
use Webbtj\Clico\Text;
echo (new Text())->text('Example #1')->red()->bold();
// will output "Example #1" in bold, red text.
echo (new Text('Example #2))->blue()->blink();
//will output "Example #2" in blinking, blue text.
$text = new Text();
$text->test('Example #3');
$text->foreground()->dark()->blue()->background()->light()->red();
$text->underline();
echo $text;
// will output "Example #3" in underlined, dark blue text
// with a light red background
使用 Table
Table 类提供了一种表达式的 API,用于为 CLI 输出格式化表格数据。该类提供添加标题和正文内容的方法、操作用于表格布局的字符,并提供所有可以针对整个表格、一行、一列或单个单元格的 Text 方法。
添加数据
__construct(Array $data, bool $firstRowAsHeader)- 构造函数可以可选地设置表格数据,并可以指定第一行是否为标题。addHeader(Array $row)- 添加提供的数据作为标题行。取消设置之前的标题行。addRow(Row $row)- 将单个行添加到表格末尾。populate(Array $data)- 为提供数组中的每个条目添加新行。setFirstRowAsHeader()- 将第一行设为标题行。
设置表格字符
setHeaderLineCharacter(string $char)- 设置用于分隔标题行和表格正文的字符。setPipeCharacter(string $char)- 设置用于分隔表格列的字符。setRowLineCharacter(string $char)- 设置用于分隔表格正文行的字符。
格式化
Table 类提供了 Text 类的所有文本格式化方法。默认情况下,这些方法应用于表格中的所有单元格。您可以通过后续的文本格式化方法指定整个行、列或单个单元格以进行目标。
cell(int $column, int $row)- 设置用于格式化的特定单元格。$column和$row是基于零的。column(int $index)- 设置用于格式化的列。$index是基于零的。省略$index以取消之前选定的列。distributeColumns(int $width)- 设置所需的宽度(以字符为单位)。默认情况下,此操作自动执行,宽度为160。如果您想要不同的宽度,应在所有数据已填充并且在渲染之前调用此方法。row(int $index)- 设置用于格式化的行。$index是基于零的。省略$index以取消之前选定的行。
元数据
getHeaderLineCharacter()- 获取用于分隔标题行和表格正文的字符。此返回装饰过的文本版本。getHeight()- 获取表格中的行数。getPipeCharacter()- 获取用于分隔表格列的字符。此返回装饰过的文本版本。getRowLineCharacter()- 获取用于分隔表格正文行的字符。此返回装饰过的文本版本。getWidth()- 获取表格中的列数。
贡献
总是欢迎在 GitHub 上进行贡献。请在提交 PR 之前打开问题,并在您的提交消息/PR 描述中标记问题。此外,尽可能遵守 PSR-2。