varspool/pygments-bundle

一个将 Pygments 集成到 Sundown 渲染 Markdown 中以提供代码高亮显示的捆绑包

安装: 856

依赖: 0

建议者: 0

安全: 0

星级: 9

关注者: 2

分支: 3

开放问题: 0

类型:symfony-bundle

1.0.0 2014-09-25 14:52 UTC

This package is auto-updated.

Last update: 2024-09-09 23:40:31 UTC


README

VarspoolPygmentsBundle

提供类似 GFM(Github 风格的 Markdown)的 Markdown(X)HTML 渲染,包括语法高亮的代码块。代码着色由 Python Pygments 库提供(目前通过 proc_open 与 pygmentize 接口)。

VarspoolPygmentsBundle 不会重新发明轮子:它使用 KwattroMarkdownBundle 中的 Sundown 支持,在KwattroMarkdownBundle中执行初始 Markdown 渲染。

安装

安装 Sundown PHP 扩展

Sundown 扩展 通过 PECL 以测试版状态提供,因此安装它可能如下所示

sudo pecl install sundown-beta

当 Sundown 扩展在 php\_info() 的输出中显示时,您将能够知道您已成功安装

php -i | grep 'Sundown Support'

安装 pygments

这通常通过您的包管理器提供,如 python-pygments 包或类似。

sudo apt-get install python-pygments

然而,关键是您有可执行的 pygmentize 脚本。它通常位于 /usr/bin/pygmentize,但如果不是,您可以配置其位置(请参阅下面的 app/config.yml)。

Composer

varspool/pygments-bundle 添加到您的 requires 字段。然后安装/更新您的依赖项。

app/AppKernel.php

注册 KwattroMarkdownBundleVarspoolPygmentsBundle

# app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Kwattro\MarkdownBundle\KwattroMarkdownBundle(),
        new Varspool\PygmentsBundle\VarspoolPygmentsBundle(),
    );
}

app/config.yml

接下来,配置默认的 Markdown 渲染器 kwattro_markdown 服务,使其停止抱怨。

kwattro_markdown:
    renderer:     xhtml

您可以可选地配置 pygmentize 脚本的位置。默认为 /usr/bin/pygmentize

varspool_pygments:
    bin:     /usr/local/bin/pygmentize

您还可以指定传递给 Pygmentize 的词法分析器参数。请参阅文档以获取列表

varspool_pygments:
  lexer_arguments:
    linenos: table

尽管其名称如此,此选项还可以包含 格式化程序参数,例如行号。

用法

服务

kwattro_markdown

KwattroMarkdownBundle 通常提供 kwattro_markdown 服务。在设置 VarspoolPygmentsBundle 时,此服务不会更改:该服务将继续提供无语法高亮的 Markdown 渲染。此服务通常是一个 Kwattro\MarkdownBundle\Markdown\KwattroMarkdown 对象。

$xhtml = $this->get('kwattro_markdown')->render($markdown_source);

varspool_markdown

一旦您已安装 VarspoolPygmentsBundle,您将有一个第二个服务可供使用: vaspool_markdown。此服务将扩展 Kwattro\MarkdownBundle\Markdown\KwattroMarkdown,因此您应该能够轻松地将其替换。它将在 markdown 中着色代码块。此服务通常是一个 Varspool\PygmentsBundle\Markdown\KwattroMarkdown 对象。

$colorized_xhtml = $this->get('varspool_markdown')->render($markdown_source);

varspool_pygments

此服务是负责着色输出的 Sundown 渲染器实例。它通常是一个 Varspool\PygmentsBundle\Sundown\Render\ColorXHTML 实例。

样式表

Pygments 渲染器使用 div 标签和类标记输出的一部分。然后您需要将这些标签分配样式。

SCSS/Compass

如果您已经使用 Compass 或 SASS,Resources/public/css/_pygments.scss 中有一个示例 Pygments 样式表。默认实现使用 Solarized 色调。您应该能够从您自己的文件中导入此样式表。

动态样式

Pygments 可以提供几个样式表来自动着色输出。提供了一个控制器,它将通过调用 pygmentize -S <style> 输出样式。要使用控制器,请从您的路由中引用它

# app/config/routing.yml
varspool_pygments:
  resource: '@VarspoolPygmentsBundle/Controller/PygmentsController.php'
  type: annotation

然后在您的页面中通过URL /pygments/<pygments_formatter>/<pygments_style>.css 包含一个CSS文件。(例如:/pygments/html/friendly.css)。

或者,您也可以从varspool_pygments服务中获取样式字符串。

$pygments_formatter = $this->container->get('varspool_pygments');
$styles = $pygments_formatter->getStyles('friendly');