scribe/pygments-bundle

该软件包已被废弃,不再维护。未建议替代软件包。

一个集成Pygments的包,用于在Sundown渲染的Markdown中提供代码高亮。

安装: 168

依赖关系: 0

建议者: 0

安全: 0

星标: 1

关注者: 6

分支: 3

开放问题: 0

类型:symfony-bundle

v0.1.0 2014-09-25 01:35 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:39:58 UTC


README

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

VarspoolPygmentsBundle并非重新发明轮子:它使用KwattroMarkdownBundle中的Sundown支持来进行初始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

接下来,为kwattro_markdown服务配置默认的Markdown渲染器,以便它停止抱怨。

kwattro_markdown:
    renderer:     xhtml

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

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

您还可以指定传递给Pygmentize的lexer参数。有关列表,请参阅文档

varspool_pygments:
  lexer_arguments:
    linenos: table

尽管其名称如此,此选项也可以包含格式化参数,例如linenos。

用法

服务

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(例如 /pygments/html/friendly.css)在您的页面上包含一个 CSS 文件。

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

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