spatie/commonmark-highlighter

使用 league/commonmark 高亮你的 Markdown 代码块

3.0.0 2021-08-04 18:03 UTC

This package is auto-updated.

Last update: 2024-08-25 21:53:08 UTC


README

使用 league/commonmark 高亮你的 Markdown 代码块

Latest Version Build Status Quality Score StyleCI Total Downloads

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 环境,并注册 FencedCodeRendererIndentedCodeRender,如 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)。更多信息请参阅许可证文件