zhenhaihou / commonmark-highlighter
使用升级league/commonmark版本、添加表格、删除线的转换突出显示您的Markdown代码块
Requires
- php: ^7.2
- league/commonmark: ^1.3.1
- scrivo/highlight.php: ^9.15.6.1
Requires (Dev)
- larapack/dd: ^1.0
- phpunit/phpunit: ^8.0
- spatie/phpunit-snapshot-assertions: ^2.0
README
league/commonmark的代码块突出显示渲染器,使用scrivo/highlight.php突出显示代码块。
highlight.php是一个用PHP编写的服务器端代码突出显示工具,目前支持185种语言。它是Ivan Sagalaev的highlight.js的移植版,充分利用了原始JavaScript项目的语言和样式定义。
输出HTML与highlight.js主题兼容,您可以在highlightjs.org/static/demo/上探索。
与highlight.js相比,使用此包有哪些好处?
- 更少的JavaScript,意味着页面加载更快
- 不再有未样式化的代码块闪烁
该项目受到sixlive/parsedown-highlight的启发。
安装
您可以通过composer安装此包
composer require spatie/commonmark-highlighter
用法
创建一个自定义CommonMark环境,并按照league/commonmark文档中所述注册FencedCodeRenderer和IndentedCodeRender。
use League\CommonMark\Block\Element\FencedCode; use League\CommonMark\Block\Element\IndentedCode; use League\CommonMark\CommonMarkConverter; use League\CommonMark\Environment; use Spatie\CommonMarkHighlighter\FencedCodeRenderer; use Spatie\CommonMarkHighlighter\IndentedCodeRenderer; $environment = Environment::createCommonMarkEnvironment(); $environment->addBlockRenderer(FencedCode::class, new FencedCodeRenderer()); $environment->addBlockRenderer(IndentedCode::class, new IndentedCodeRenderer()); $commonMarkConverter = new CommonMarkConverter([], $environment); echo $commonMarkConverter->convertToHtml($markdown);
底层highlight库建议指定自动检测的语言子集。您可以将语言数组传递给任何渲染器。
new FencedCodeRenderer(['html', 'php', 'js']); new IndentedCodeCodeRenderer(['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。
安全
如果您发现任何安全相关的问题,请通过电子邮件freek@spatie.be报告,而不是使用问题跟踪器。
明信片软件
您可以使用此包,但如果它进入您的生产环境,我们非常希望您从家乡寄给我们一张明信片,提及您正在使用我们的哪些包。
我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。
我们在我们的公司网站上发布所有收到的明信片。
致谢
支持我们
Spatie是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述。
您的业务依赖于我们的贡献吗?联系我们在Patreon上的支持。所有承诺都将用于分配人力进行维护和新酷炫的功能。
许可
MIT许可证(MIT)。有关更多信息,请参阅许可文件。