mccool / twig-markdown
用于处理Markdown内容的Twig扩展
Requires
- php: >=7.0
- twig/twig: ^2.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- erusev/parsedown: ^1.6
- knplabs/github-api: ~1.4
- league/commonmark: ~0.5
- michelf/php-markdown: ~1
- phpunit/phpunit: ~6.0||~5.0
Suggests
- knplabs/github-api: Needed for using GitHub's Markdown engine provided through their API.
- michelf/php-markdown: Original Markdown engine with MarkdownExtra.
README
Twig Markdown扩展提供了一个新的过滤器和一个标签,允许在Twig模板中将内容解析为Markdown。
此扩展可以与多个Markdown解析器集成,因为它提供了一个接口,允许您自定义Markdown解析器。
支持的解析器
- michelf/php-markdown (+ MarkdownExtra)
- league/commonmark
- KnpLabs/php-github-api
- erusev/parsedown
功能
- 支持过滤器
{{ "# 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许可证的许可。