ultrono/markdown

Markdown 是 Laravel 的 CommonMark 包装器

14.1.1 2023-02-17 17:23 UTC

This package is auto-updated.

Last update: 2024-09-18 00:36:04 UTC


README

此存储库是 GrahamCampbell/Laravel-Markdown 的临时分支,增加了 Laravel 10 支持。当 GrahamCampbell#175 合并时将删除。

Laravel Markdown

Laravel Markdown 由 Graham Campbell 创建并维护,是 CommonMark 的 Laravel 包装器。它还提供了与 Laravel 视图系统的集成。您可以查看 变更日志版本发布安全策略许可行为准则 以及 贡献指南

Banner

Build Status StyleCI Status Software License Packagist Downloads Latest Version

安装

此版本需要 PHP 7.4-8.1 并支持 Laravel 8-9。

要获取最新版本,只需使用 Composer 引入项目

$ composer require graham-campbell/markdown:^14.0

安装后,如果您没有使用自动包发现,那么您需要在您的 config/app.php 中注册 GrahamCampbell\Markdown\MarkdownServiceProvider 服务提供者。

您还可以选择性地为我们的外观设置别名

        'Markdown' => GrahamCampbell\Markdown\Facades\Markdown::class,

配置

Laravel Markdown 支持可选配置。

要开始,您需要发布所有供应商资产

$ php artisan vendor:publish

这将创建一个您可以在其中修改配置的 config/markdown.php 文件。此外,请确保检查此包之间原始配置文件的更改。

有几种配置选项

启用视图集成

此选项('views')指定是否启用视图集成,以便您可以编写 markdown 视图并将它们渲染为 html。当前支持的扩展名有:'.md''.md.php''.md.blade.php'。此外,这将启用 @markdown Blade 指令。如果您与其他包冲突,可以禁用此集成。此设置的默认值为 true

CommonMark 扩展

此选项('extensions')指定将自动启用哪些扩展。在此处提供您的扩展类名,它们将从服务容器中解析,并与 CommonMark 注册。此设置的默认值为 [League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, League\CommonMark\Extension\Table\TableExtension::class]

渲染器配置

此选项('renderer')指定用于渲染 HTML 的选项数组。此设置的默认值为 ['block_separator' => "\n", 'inner_separator' => "\n", 'soft_break' => "\n"]

CommonMark 配置

此选项('commonmark')指定了commonmark的选项数组。此设置的默认值为['enable_em' => true, 'enable_strong' => true, 'use_asterisk' => true, 'use_underscore' => true, 'unordered_list_markers' => ['-', '+', '*']]

HTML 输入

此选项('html_input')指定了如何处理不受信任的HTML输入。此设置的默认值为'strip'

允许不安全链接

此选项('allow_unsafe_links')指定是否允许有风险的图像URL和链接。此设置的默认值为true

最大嵌套级别

此选项('max_nesting_level')指定允许的最大块嵌套级别。此设置的默认值为PHP_INT_MAX

别名规范化器

此选项('slug_normalizer')指定别名规范化的选项数组。此设置的默认值为['max_length' => 255, 'unique' => 'document']

用法

Facades\Markdown

此外观将动态将静态方法调用传递到ioc容器中的'markdown.converter'对象,默认情况下是League\CommonMark\ConverterInterface的一个实例。

MarkdownServiceProvider

此类没有感兴趣的公共方法。此类应添加到config/app.php中的提供者数组。此类将设置ioc绑定。

真实示例

在这里,您可以看到如何简单使用此包的示例。

use GrahamCampbell\Markdown\Facades\Markdown;

Markdown::convert('foo')->getContent(); // <p>foo</p>

如果您像我一样更喜欢使用依赖注入而不是外观,则可以轻松地像这样注入类

use Illuminate\Support\Facades\App;
use League\CommonMark\ConverterInterface;

class Foo
{
    private ConverterInterface $converter;

    public function __construct(ConverterInterface $converter)
    {
        $this->converter = $converter;
    }

    public function bar(): string
    {
        return $this->converter->convert('foo')->getContent();
    }
}

App::make(Foo::class)->bar();

别忘了,这仅仅是基础。我们还支持通过监听容器中的解析事件来扩展,我们还提供了与Laravel视图系统的集成。您可以使用@markdown blade指令,也可以使用以下文件扩展名将视图编译为markdown:.md.md.php.md.blade.php

例如,以下都是渲染markdown的方法

foo.blade.php:

@markdown('# Foo')

bar.blade.php:

@markdown
# Bar
@endmarkdown

baz1.md:

# Baz 1

baz2.md.php:

# Baz 2

baz3.md.blade.php:

# Baz 3
更多信息

此包中还有一些未在此处记录的类(例如引擎和编译器类)。这是因为它们不是用于公开使用的,而是由此包内部使用的。

扩展

如配置文档中所示,CommonMark可以使用扩展进行修改。CommonMark文档的定制部分有一些很好的示例,说明如何创建定制的解析器和渲染器:https://commonmark.thephpleague.com/

安全

如果您在此包中发现安全漏洞,请发送电子邮件至security@tidelift.com。所有安全漏洞都将得到及时解决。您可以在此处查看我们的完整安全策略这里

许可协议

Laravel Markdown受MIT许可协议(MIT)许可。

企业版

作为Tidelift订阅的一部分提供

graham-campbell/markdown的维护者以及成千上万的其他包维护者正在与Tidelift合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康,同时为使用的确切依赖项支付维护者。了解更多信息。