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。