webbtj/clico

用于在命令行界面(CLI)中格式化和着色文本输出的表达性API

v0.1 2019-11-08 15:35 UTC

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

用法

安装完成后,您可以在自己的代码中使用TextTable类。

use Webbtj\Clico\Text;
use Webbtj\Clico\Table;

TextTable类通过其__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。