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许可证的许可。