loilo / lowlight
在终端显示150多种语言的语法高亮代码
Requires
- php: >= 7.2
- scrivo/highlight.php: ^9.12
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-24 07:01:48 UTC
README

Lowlight
Lowlight在终端显示150多种语言的语法高亮代码。它建立在highlight.php之上。
安装
此软件包可通过Composer获取。要将它添加到您的项目中,只需运行
composer require loilo/lowlight
用法
前提条件
如果您在没有框架上下文中运行Lowlight,您可能需要首先初始化Composer的自动加载
require_once __DIR__ . '/vendor/autoload.php';
入门指南
要高亮显示一段PHP代码,请这样做
$ll = new Lowlight\Lowlight; echo $ll->highlight('php', $somePhpSnippet)->value;
有许多语言可用。请参阅完整列表此处。
自动语言检测
如果您正在处理用户提供的代码,您可能并不总是知道所使用的语言。这就是自动检测发挥作用的地方。
假设我们得到了配置代码,但我们不确定它是JSON、YAML还是INI,那么以下方法将适当地突出显示它
$ll = new Lowlight\Lowlight; echo $ll->highlightAuto($userProvidedCode, [ 'json', 'yaml', 'ini' ])->value;
highlightAuto()
方法的第二个参数是要检查的语言。
- 传递参数是可选的。默认为
[ 'xml', 'json', 'javascript', 'css', 'php', 'http' ]
。 - 您可以通过调用以下方法来调整默认检测语言
$ll->setDefaultAutodetectLanguages([ 'json', 'yaml', 'ini' ]);
主题化
主题化与highlight.js的主题化类似。Highlight.js将每个标记表示为CSS类名(例如hljs-comment
),而Lowlight使用标记作为主题数组中的键。
$ll->theme['comment'] = 'green';
如您所见,终端中的样式相当有限。Lowlight仅允许您设置标记的文本颜色,没有其他设置。因此,您通常无法通过主题创建与CSS相同数量的氛围(也许除了使用任意RGB颜色外)。
颜色
可用的颜色有
default
(终端的默认文本颜色)黑色
gray
/grey
(实际上是相同的)white
,bright-white
red
,bright-red
green
,bright-green
yellow
,bright-yellow
blue
,bright-blue
magenta
,bright-magenta
cyan
,bright-cyan
RGB颜色
许多现代终端都支持24位调色板。您可以使用RGB数组为标记提供颜色,而不是使用16种左右的旧式颜色名称。
$ll->theme['comment'] = [ 0, 175, 95 ];
如果您想使用这些颜色,检测对24位颜色的支持(就像所有与颜色相关的功能一样)取决于您自己。
自定义主题
要创建自己的主题,一种可行的方法是使用现有的highlight.js主题,提取所有.hljs-xxx
类,并将它们转换为PHP关联数组。
注意:通常,您不知道用户终端的通用样式以及您的主题如何与之集成(尤其是如果他们使用的是深色或浅色主题),因此在使用颜色时要小心并限制。
顺便说一下,这是Lowlight的默认主题
$ll->theme = [ 'comment' => 'gray', 'string' => 'blue', 'number' => 'green', 'literal' => 'bright-green', 'meta' => 'cyan', 'meta-string' => 'bright-cyan', 'keyword' => 'yellow', 'attribute' => 'yellow', 'selector-tag' => 'yellow', 'meta-keyword' => 'yellow', 'doctag' => 'yellow', 'name' => 'yellow', 'type' => 'red', 'subst' => 'red', 'selector-id' => 'red', 'selector-class' => 'red', 'quote' => 'red', 'template-tag' => 'red', 'deletion' => 'red', 'title' => 'magenta', 'section' => 'magenta', 'built_in' => 'magenta', 'regexp' => 'bright-red', 'symbol' => 'bright-red', 'variable' => 'bright-red', 'template-variable' => 'bright-red', 'link' => 'bright-red', 'selector-attr' => 'bright-red', 'selector-pseudo' => 'bright-red', 'built' => 'green', 'bullet' => 'green', 'code' => 'green', 'addition' => 'green', 'emphasis' => 'red', 'strong' => 'red' ];
致谢
- highlight.php(highlight.js的移植版)是一个具有HTML输出的语法高亮器。它做了Lowlight的大部分繁重工作。查看它!
- Lowlight的标志基于一幅图形,该图形来自Twemoji项目(许可协议为CC BY 4.0)。