mccool/twig-markdown

用于处理Markdown内容的Twig扩展

4.0.2 2020-11-28 15:06 UTC

This package is auto-updated.

Last update: 2024-08-28 23:40:29 UTC


README

Build Status

Twig Markdown扩展提供了一个新的过滤器和一个标签,允许在Twig模板中将内容解析为Markdown。

此扩展可以与多个Markdown解析器集成,因为它提供了一个接口,允许您自定义Markdown解析器。

支持的解析器

功能

  • 支持过滤器 {{ "# Heading Level 1"|markdown }}
  • 支持标签 {% markdown %}{% endmarkdown %}

当用作标签时,第一行的缩进级别将设置为标签其余内容的默认缩进级别。从该缩进级别开始,所有相同缩进或缩进减少的级别文本将被转换为普通文本。

此功能允许您在任何缩进级别编写Markdown内容,而无需关心Markdown内部的转换

<div>
    <h1 class="someClass">{{ title }}</h1>

    {% markdown %}
    This is a list that is indented to match the context around the markdown tag:

    * List item 1
    * List item 2
        * Sub List Item
            * Sub Sub List Item

    The following block will be transformed as code, as it is indented more than the
    surrounding content:

        $code = "good";

    {% endmarkdown %}

</div>

安装

运行composer命令安装最新稳定版本

composer require aptoma/twig-markdown

或更新您的composer.json

{
    "require": {
        "aptoma/twig-markdown": "~2.0"
    }
}

您可以选择提供自己的Markdown引擎,尽管我们建议使用michelf/php-markdown

composer require michelf/php-markdown ~1.3
{
    "require": {
        "michelf/php-markdown": "~1.3"
    }
}

您还可以使用PHP League CommonMark引擎

composer require league/commonmark ~0.5
{
    "require": {
        "league/commonmark": "~0.5"
    }
}

使用方法

Twig扩展

Twig扩展提供了markdown标签和过滤器支持。

假设您正在使用composer自动加载,将扩展添加到Twig环境

use Aptoma\Twig\Extension\MarkdownExtension;
use Aptoma\Twig\Extension\MarkdownEngine;

$engine = new MarkdownEngine\MichelfMarkdownEngine();

$twig->addExtension(new MarkdownExtension($engine));

Twig标记解析器

Twig标记解析器仅提供markdown标签!

use Aptoma\Twig\Extension\MarkdownEngine;
use Aptoma\Twig\TokenParser\MarkdownTokenParser;

$engine = new MarkdownEngine\MichelfMarkdownEngine();

$twig->addTokenParser(new MarkdownTokenParser($engine));

GitHub Markdown引擎

MarkdownEngine\GitHubMarkdownEngine通过KnpLabs\php-github-api使用GitHub的公共API提供了一个接口,通过公共API。为了减少API调用,渲染的文档被哈希并缓存到文件系统中。您可以将GitHub存储库和用于缓存的路径传递给构造函数

use Aptoma\Twig\Extension\MarkdownEngine;

$engine = new MarkdownEngine\GitHubMarkdownEngine(
    'aptoma/twig-markdown', // The GitHub repository to use as a context
    true,                   // Whether to use GitHub's Flavored Markdown (GFM)
    '/tmp/markdown-cache',  // Path on filesystem to store rendered documents
);

为了验证API客户端(例如),您可以通过传递自己的\GitHub\Client实例来代替让引擎自己创建一个

$client = new \Github\Client;
$client->authenticate('GITHUB_CLIENT_ID', 'GITHUB_CLIENT_SECRET', \Github\Client::AUTH_URL_CLIENT_ID);

$engine = new MarkdownEngine\GitHubMarkdownEngine('aptoma/twig-markdown', true, '/tmp/markdown-cache', $client);

使用不同的Markdown解析器引擎

如果您想使用不同的Markdown解析器,您需要创建一个实现Aptoma\Twig\Extension\MarkdownEngineInterface.php的适配器。请参阅Aptoma\Twig\Extension\MarkdownEngine\MichelfMarkdownEngine以获取示例。

测试

测试套件使用PHPUnit

$ phpunit

许可

Twig Markdown扩展受MIT许可证的许可。