tin 是一个PHP代码高亮工具。

2.0.0 2024-03-14 19:45 UTC

This package is auto-updated.

Last update: 2024-09-15 11:26:35 UTC


README

tin 是一个PHP(终端、HTML等)代码高亮工具。

Tests Formats Version Total Downloads License

安装

需要 PHP 8.3+

您可以通过composer安装此包

composer require felixdorn/tin

屏幕截图

A piece of code highlighted using tin

Another piece of code highlighted using tin

是的,这是来自终端的。

使用方法

<?php

use Felix\Tin\Themes\JetbrainsDark;
use Felix\Tin\Tin;

echo Tin::from(JetbrainsDark::class, $ansi = true)->highlight("<?php\n\necho 'Hello world';\n");

自定义输出

您可以对高亮过程完全控制。实现 Felix\Tin\Contracts\OutputInterface 接口或实现一个自定义主题,如果您只是想更改颜色。

输出

$tin = new \Felix\Tin\Tin(
    new \Felix\Tin\Outputs\AnsiOutput()
)
$tin = new \Felix\Tin\Tin(
    new \Felix\Tin\Outputs\HtmlOutput()
)

可调用输出通常与ANSI或HTML输出一起使用,您可以将它视为一种装饰器,在需要更改一些小东西而不创建类的情况下使用。

$tin = new \Felix\Tin\Tin(
    new \Felix\Tin\Outputs\CallableOutput(
        new \Felix\Tin\Themes\OneDark(),
        fn (\Felix\Tin\Line $line) => $line->number % 2 ? 
            (new \Felix\Tin\Outputs\AnsiOutput())->transformLine($line) :
             null
    )
)

主题

主题定义了输出使用的颜色。格式为 r;g;b,以匹配默认ANSI格式。

创建主题

您需要扩展 Felix\Tin\Themes\Theme 并将颜色设置为所需的任何颜色。

颜色是RGB值,由一个 ; 分隔。

use Felix\Tin\Contracts\ThemeInterface;
use Felix\Tin\Enums\TokenType;

class OneDark extends ThemeInterface
{
    /** {@inheritDoc} */
    public function color(TokenType $type): string
    {
        return match ($type) {
            TokenType::Keyword  => '199;120;221',
            TokenType::Variable => '224;107;116',
            TokenType::Comment  => '91;98;110',
            TokenType::String   => '152;195;121',
            TokenType::Function, TokenType::NamedParameter, TokenType::Attribute => '98;174;239',
            TokenType::Number, TokenType::Html => '229;192;122',
            default => '171;178;191',
        };
    }
}

测试

composer test

tinFélix DornMIT许可证 下创建。