ramsey / twig-codeblock
这是一个用于定义代码块进行语法高亮(使用 Pygments)以及其他功能的 Twig 扩展。
Requires
- php: ^5.6 || ^7.0
- ramsey/pygments: ^1.0
- twig/twig: ^1.15 || ^2.0
Requires (Dev)
- jakub-onderka/php-parallel-lint: ^0.9.2
- mockery/mockery: ^0.9.9
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^2.8
This package is auto-updated.
Last update: 2024-08-29 03:47:35 UTC
README
将带有语法高亮和更多功能的代码片段添加到任何 Twig 模板。
Twig 的 Codeblock 扩展是 Octopress/Jekyll 的 {% codeblock %} liquid 标签的移植。
默认情况下,Codeblock 使用 Pygments,Python 语法高亮器,生成适合代码块高亮的 HTML 标记,但它可以使用任何语法高亮器。要使用其他语法高亮器,只需实现 HighlighterInterface
(下面有示例)。
本项目遵循 贡献者行为准则。通过参与本项目及其社区,您应遵守此准则。
安装
首选的安装方法是使用 Packagist 和 Composer。运行以下命令安装包并将其添加到项目的 composer.json
文件中的需求。
composer require ramsey/twig-codeblock
使用
{% codeblock [options] %}
[lines of code]
{% endcodeblock %}
选项
Codeblock 提供了多个选项。请注意,顺序无关紧要。
示例
{% codeblock lang:"php" %}
class Bar implements BarInterface
{
private $baz;
public function __construct(BazInterface $baz)
{
$this->baz = $baz;
}
public function doIt()
{
return $this->baz->do('it');
}
}
{% endcodeblock %}
配置
默认情况下,Codeblock 使用 Pygments,如果 pygmentize
在您的 PATH
中,则无需传递任何参数。
use Ramsey\Twig\CodeBlock\CodeBlockExtension; $env = new \Twig_Environment(new \Twig_Loader_Filesystem('/path/to/templates')); $env->addExtension(new CodeBlockExtension());
如果 pygmentize
不在 PATH
中,您可以指定其位置
use Ramsey\Twig\CodeBlock\CodeBlockExtension; $env = new \Twig_Environment(new \Twig_Loader_Filesystem('/path/to/templates')); $env->addExtension( new CodeBlockExtension('pygments', ['/usr/local/bin/pygmentize']) );
Pygments
默认情况下,Pygments 用于代码高亮。您需要 安装 Pygments 并确保系统上可用的 pygmentize
CLI 工具。如果 pygmentize
不在您的 PATH
中,请参阅配置部分以获取帮助配置 Codeblock。
pip install Pygments
样式
语法高亮器,如 Pygments,需要一个样式表来生成标记。Pygments 为您提供了一些样式表,您可以从命令行列出它们。
pygmentize -L styles
要输出并保存其中一个样式以用于您的应用程序,请使用以下命令:
pygmentize -S solarizedlight -f html > solarizedlight.css
此外,还有许多可以在网上找到的 Pygments 自定义样式,您也可以创建自己的样式。
语言
如果使用 Pygments,以下是一些它支持的语言(lexers):
- css
- diff
- html
- html+php
- javascript
- json
- php
- sass
- shell
- sql
- twig
- yaml
要查看更多,请在命令行中键入以下内容:
pygmentize -L lexers
使用您自己的高亮器
如果您有自己的高亮器类,该类实现了 Ramsey\Twig\CodeBlock\Highlighter\HighlighterInterface
,则可以指定完全限定的类名作为扩展的第一个参数。第二个参数是一个数组,包含从 0 开始索引的值,这些值将作为参数传递给您的类构造函数。请确保按照构造函数要求的顺序指定它们。
use Ramsey\Twig\CodeBlock\CodeBlockExtension; use Your\Own\Highlighter as MyHighlighter; $env = new \Twig_Environment(new \Twig_Loader_Filesystem('/path/to/templates')); $env->addExtension( new CodeBlockExtension(MyHighlighter::class, ['arg1', 'arg2', 'arg3']) );
贡献
欢迎贡献!请阅读 CONTRIBUTING 以获取详细信息。
版权和许可证
ramsey/twig-codeblock 库版权所有 © Ben Ramsey,并许可在 MIT 许可证(MIT)下使用。更多信息请参阅 LICENSE。