PHP 中创建 ANSI 转义码的库

dev-main 2023-11-09 15:06 UTC

This package is auto-updated.

Last update: 2024-09-09 16:58:02 UTC


README

Test codecov GitHub

此库可以让你轻松在 CLI 中生成 ANSI 序列字符串。

以下是一些你可以使用此库做的事情。

  • 设置前景/背景颜色
  • 设置字体样式(粗体/斜体)
  • 移动光标位置
  • 清屏
  • 获取终端大小

先决条件

  • PHP 8.1+

安装

composer require south-pointe/ansi

示例

use SouthPointe\Ansi\Ansi;
use SouthPointe\Ansi\Codes\Color;

// Change foreground text to blue.
echo Ansi::fgColor(Color::Blue);

// Set color by 256-color mode.
echo Ansi::fgColor(Color::code(12));

// Move the cursor back by 2.
echo Ansi::cursorBack(2);

// Add "test" + "\e[0m" (reset style) + "\r" (carriage return) + "\n" (new line)
echo Ansi::line('test');

// Ansi::buffer() will allow you to chain multiple sequences.
echo Ansi::buffer()
    ->bold()
    ->fgColor(Color::Gray)
    ->text('foo bar')
    ->resetStyle()
    ->toString();

// Will send the string to STDOUT (default stream uri)
echo Ansi::stream()
    ->text('to stdout')
    ->flush();

// Will send the string to STDERR
echo Ansi::stream(STDERR)
    ->bgColor(Color::Red)
    ->flush();

// Returns the size of the terminal as ['row' => int, 'column' => int].
echo Ansi::getTerminalSize();

方法

Ansi

这是你应使用的主要类来生成序列代码。
此类中的所有方法都是静态的。

  • Ansi::buffer(): Buffer 开始一个缓冲实例。用于链式调用序列。
  • Ansi::line($text): string 输出文本,重置样式,并移动到新行。
  • Ansi::bell(): string 使铃声响起。
  • Ansi::backspace(): string 将光标向后移动。
  • Ansi::tab(): string 将光标移动8个空格。
  • Ansi::lineFeed(): string 移动到下一行并向上滚动屏幕。
  • Ansi::carriageReturn(): string 将光标移动到列0。
  • Ansi::cursorUp(int $n = 1): string 将光标向上移动 $n 行。
  • Ansi::cursorDown(int $n = 1): string 将光标向下移动 $n 行。
  • Ansi::cursorForward(int $n = 1): string 将光标向前移动 $n 单元。
  • Ansi::cursorBack(int $n = 1): string 将光标向后移动 $n 单元。
  • Ansi::cursorNextLine(int $n = 1): string 将光标移动到行首并向下移动 $n
  • Ansi::cursorPreviousLine(int $n = 1): string 将光标移动到行首并向上移动 $n
  • Ansi::cursorPosition(int $row, int $column): string 将光标移动到指定位置。
  • Ansi::eraseScreen(): string 清除整个屏幕。
  • Ansi::eraseToEndOfScreen(): string 从光标位置清除到屏幕末尾。
  • Ansi::eraseFromStartOfScreen(): string 从屏幕开头清除到光标位置。
  • Ansi::eraseSavedLines(): string 清除屏幕并删除滚动缓冲区中的所有行。
  • Ansi::eraseLine(): string 清除整行。光标位置不会改变。
  • Ansi::eraseToEndOfLine(): string 从光标位置清除到行末。
  • Ansi::eraseFromStartOfLine(): string 从行首清除到光标位置。
  • Ansi::scrollUp(int $lines = 1): string 向上滚动屏幕 $lines 行。
  • Ansi::scrollDown(int $lines = 1): string 向下滚动屏幕 $lines 行。
  • Ansi::resetStyle(): string 重置输出样式。
  • Ansi::bold(bool $toggle = true): string 对后续文本应用粗体样式。
  • Ansi::italic(bool $toggle = true): string 对后续文本应用斜体样式。
  • Ansi::underline(bool $toggle = true): string 对后续文本应用下划线。
  • Ansi::blink(bool $toggle = true): string 使后续文本闪烁。
  • Ansi::foreground(Color $color): string 将给定颜色应用到前景字体。
  • Ansi::foreground(Color $color): string 将给定颜色应用到背景字体。
  • Ansi::deviceStatusReport(): string 提供设备状态报告。
  • Ansi::getTerminalSize(): array{ row: int, column: int } 获取当前终端的终端大小。

Buffer

应通过调用 Ansi::buffer() 来实例化此类。
缓冲类包含Ansi类中除getTerminalSize以外的所有方法。

  • text(string $text): self 将文本添加到缓冲区。
  • flush(resource $to): self 将所有缓冲的序列刷新到指定的资源。
  • clear(): self 清除缓冲区中存储的所有序列。
  • toString(): string 将所有缓冲的序列转换为字符串。

颜色

包含8位颜色快捷名称的枚举。
查看所有名称的实际类

  • Color::code(int $code): self 通过数字获取颜色。

许可证

这是一个开源软件,受MIT许可证许可。

参考