ramsey/twig-codeblock

这是一个用于定义代码块进行语法高亮(使用 Pygments)以及其他功能的 Twig 扩展。

2.0.0 2017-04-18 07:37 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:35 UTC


README

将带有语法高亮和更多功能的代码片段添加到任何 Twig 模板。

Source Code Latest Version Software License Build Status Coverage Status Total Downloads

Twig 的 Codeblock 扩展是 Octopress/Jekyll 的 {% codeblock %} liquid 标签的移植。

默认情况下,Codeblock 使用 Pygments,Python 语法高亮器,生成适合代码块高亮的 HTML 标记,但它可以使用任何语法高亮器。要使用其他语法高亮器,只需实现 HighlighterInterface(下面有示例)。

本项目遵循 贡献者行为准则。通过参与本项目及其社区,您应遵守此准则。

安装

首选的安装方法是使用 PackagistComposer。运行以下命令安装包并将其添加到项目的 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