cassarco / markdown-tools
这是一个Laravel的包,允许您在应用程序中对Markdown文件运行Laravel验证和/或处理器函数。
v1.0.0
2024-03-24 23:58 UTC
Requires
- php: ^8.3
- cassarco/league-commonmark-wikilinks: ^1.0.2
- spatie/laravel-package-tools: ^1.14.0
- symfony/dom-crawler: ^7.0
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.14
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
This package is auto-updated.
Last update: 2024-09-08 13:17:46 UTC
README
这是一个Laravel的包,允许您在应用程序中对Markdown文件运行Laravel验证和/或处理器函数。
首先,在配置文件中定义一个或多个方案。然后运行捆绑的命令来处理这些方案。请继续阅读以获取更详细的说明。
安装
您可以通过composer安装此包
composer require cassarco/markdown-tools
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="markdown-tools-config"
这是已发布配置文件的内容
return [ /* |-------------------------------------------------------------------------- | Schemes |-------------------------------------------------------------------------- | | Configure as many "schemes" as you like. Each scheme should contain a | path to a single markdown file or a folder containing markdown files. | */ 'schemes' => [ // Give each scheme a name for your own organisation. 'markdown' => [ // Give the path to a folder of markdown files or a single markdown file. 'path' => resource_path('markdown'), // Specify the validation rules for front-matter properties. 'rules' => [ // 'title' => 'required', ], // Define a handler for each markdown file. You will have access to file: // - front-matter values // - markdown // - html // - htmlWithToc // - toc 'handler' => function (MarkdownFile $file) { // Do Something with each Markdown File. }, ], ], /* |-------------------------------------------------------------------------- | League/Commonmark Settings |-------------------------------------------------------------------------- | | Configure settings for League Commonmark and its extensions. | */ 'common-mark' => [ 'heading_permalink' => [ 'symbol' => '#', 'html_class' => '', 'aria_hidden' => false, 'id_prefix' => '', 'fragment_prefix' => '', ], 'table_of_contents' => [ 'html_class' => 'table-of-contents', 'position' => 'top', 'style' => 'bullet', 'min_heading_level' => 1, 'max_heading_level' => 6, 'normalize' => 'relative', 'placeholder' => null, ], 'wikilinks' => [], 'front-matter' => [ 'yaml-parse-flags' => Yaml::PARSE_DATETIME ] ], ];
用法
首先定义一个或多个方案
use function Laravel\Prompts\info; return [ 'schemes' => [ 'markdown' => [ 'path' => resource_path('markdown'), 'rules' => [ 'title' => 'required', ], 'handler' => function (MarkdownFile $file) { info("Processing {$file->frontMatter()['title']}"); }, ], ], ]
如果您正在严格遵循此示例,请务必导入info
函数
use function Laravel\Prompts\info;
现在运行捆绑的命令来处理这些方案
php artisan markdown-tools:process
在此示例中,您将看到文件夹resources/markdown
中每个Markdown文件的标题列表,前提是它们具有Markdown前端的标题属性。
如果一个或多个文件未通过验证,则您将看到Laravel验证错误。
您应该能够使用在此上下文中有意义的任何Laravel验证规则。
请注意,处理器使Markdown文件$file
可供您使用,您将找到以下方法
// Get the markdown for the markdown file. $file->markdown() // Get the front matter as a php array $file->frontMatter() // Get the html for the markdown file without a table of contents. $file->html() // Get the html table of contents. $file->toc() // Get the markdown file as html with the table of contents embedded. $file->htmlWithToc() // Get the pathname for the markdown file $file->pathname()
在我的情况下,我使用此包将Markdown文件导入我的数据库,用于https://www.carlcassar.com
Article::updateOrCreate([ 'slug' => $file->frontMatter()['slug'] ?? Str::slug($file->frontMatter()['title']), ], [ 'title' => $file->frontMatter()['title'], 'slug' => $file->frontMatter()['slug'] ?? Str::slug($file->frontMatter()['title']), 'description' => $file->frontMatter()['description'], 'table_of_contents' => $file->toc(), 'content' => $file->html(), 'image' => $file->frontMatter()['image'], 'tags' => $file->frontMatter()['tags'], 'published_at' => Carbon::make($file->frontMatter()['published_at']), 'deleted_at' => Carbon::make($file->frontMatter()['deleted_at']), 'created_at' => Carbon::make($file->frontMatter()['created_at']), 'updated_at' => Carbon::make($file->frontMatter()['updated_at']), ]);
测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG
贡献
有关详细信息,请参阅CONTRIBUTING
安全漏洞
如果您发现影响此包安全性的错误,请通过电子邮件发送到security@cassar.co,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件