spatie / commonmark-highlighter
使用 league/commonmark 高亮你的 Markdown 代码块
Requires
- php: ^7.4|^8.0
- league/commonmark: ^2.0
- scrivo/highlight.php: ^9.18.1.7
Requires (Dev)
- larapack/dd: ^1.0
- phpunit/phpunit: ^8.5|^9.4
- spatie/phpunit-snapshot-assertions: ^2.0|^4.0
README
使用 league/commonmark 高亮你的 Markdown 代码块
league/commonmark 的一个块渲染器,使用 scrivo/highlight.php 高亮代码块。
highlight.php 是一个用 PHP 编写的服务器端代码高亮工具,目前支持 185 种语言。它是 Ivan Sagalaev 的 highlight.js 的移植版本,充分利用了原始 JavaScript 项目的语言和样式定义。
输出的 HTML 与 highlight.js 主题兼容,您可以在 highlightjs.org 上探索这些主题。
与 highlight.js 相比,使用此包有什么好处?
- 更少的 JavaScript,这意味着页面加载速度更快
- 不再有未样式化的代码块闪烁
本项目受到了 sixlive/parsedown-highlight 的启发。
支持我们
我们投入了大量资源来创建 一流的开放源代码包。您可以通过 购买我们的付费产品之一 来支持我们。
我们非常感谢您从家乡寄给我们明信片,说明您使用了我们哪个包。您可以在 我们的联系页面 找到我们的地址。我们将公布所有收到的明信片在 我们的虚拟明信片墙 上。
安装
您可以通过 composer 安装此包
composer require spatie/commonmark-highlighter
用法
创建一个自定义的 CommonMark 环境,并注册 FencedCodeRenderer
和 IndentedCodeRender
,如 league/commonmark 文档 中所述。
use League\CommonMark\Environment\Environment; use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; use League\CommonMark\Extension\CommonMark\Node\Block\FencedCode; use League\CommonMark\Extension\CommonMark\Node\Block\IndentedCode; use League\CommonMark\MarkdownConverter; use Spatie\CommonMarkHighlighter\FencedCodeRenderer; use Spatie\CommonMarkHighlighter\IndentedCodeRenderer; $environment = new Environment(); $environment->addExtension(new CommonMarkCoreExtension()); $environment->addRenderer(FencedCode::class, new FencedCodeRenderer()); $environment->addRenderer(IndentedCode::class, new IndentedCodeRenderer()); $markdownConverter = new MarkdownConverter($environment); echo $markdownConverter->convertToHtml($markdown);
底层高亮库建议指定一个语言的子集以进行自动检测。您可以将语言数组传递给任一渲染器。
new FencedCodeRenderer(['html', 'php', 'js']); new IndentedCodeRenderer(['html', 'php', 'js']);
高亮特定行
行号从 1 开始。
```php - 不要高亮任何行
```php{4} - 只高亮第 4 行
```php{4-6} - 高亮第 4 行到第 6 行(包含)
```php{1,5} - 只高亮第 1 行和第 5 行
```php{1-3,5} - 高亮第 1 行到第 3 行,然后单独高亮第 5 行
```php{5,7,2-3} - 行的顺序无关紧要
然而,指定 3-2 将不起作用。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全性
如果您发现有关安全性的错误,请通过 security@spatie.be 发送电子邮件,而不是使用问题跟踪器。
明信片软件
您可以使用此包,但如果它进入了您的生产环境,我们非常感谢您从家乡寄给我们明信片,说明您使用了我们哪个包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
我们将所有收到的明信片发布在我们的公司网站上:查看明信片。
鸣谢
许可证
MIT许可证(MIT)。更多信息请参阅许可证文件。