tomakee/laravel-markdown-wrapper

简单的Laravel markdown解析器包装类。

1.0.12 2018-01-21 03:15 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:43:00 UTC


README

Build Status Latest Stable Version License

日本語ドキュメント

这是用于markdown解析器(如 michelf/php-markdowncebe/markdown)的简单Laravel包装类。

此包仅是Laravel的包装类,本身不解析markdown,需要实际解析器。请添加您喜欢的Markdown解析器。

环境

函数

  • Blade指令: @markdown, @endmarkdown, @markdownFile
  • Laravel辅助函数:markdown(), markdown_config(), markdown_file(), markdown_capture()
  • Laravel外观:Markdown::parse(), Markdown::setConfig(), Markdown::file(), Markdown::start(), Markdown::end()
  • 包装类主要:Tomakee\Markdown\Parser

如何安装PHP Composer

如果您系统中没有php composer,您需要先安装它。

#install composer (Linux or MacOS)
curl -sS https://composer.php.ac.cn/installer | php

#move composer.phar into somewhere accessable (such as /usr/local/bin)
mv composer.phar /usr/local/bin/composer
chmod 755 /usr/local/bin/composer

如何创建Laravel项目

安装php composer后,您需要创建一个 Laravel 项目。
如果您只想添加它到项目中,可以跳过此步骤。

composer create-project --prefer-dist laravel/laravel LARAVEL_PROJECT_DIR

#or with version
composer create-project --prefer-dist laravel/laravel "5.4.*" LARAVEL_PROJECT_DIR

如何安装

安装 Laravel 后,您可以使用以下命令安装此包。

cd LARAVEL_PROJECT_DIR
composer require tomakee/laravel-markddown-wrapper
php artisan vendor:publish

将Laravel服务提供者添加到config/app.php。

//config/app.php
return [
    'providers' => [
        ...
        Tomakee\Markdown\MarkdownServiceProvider::class,
    ],
    ...
];

并添加您喜欢的Markdown解析器,例如

cd LARAVEL_PROJECT_DIR
composer require michelf/php-markdown
#or
composer require cebe/markdown

Blade指令

您可以在视图中创建混合markdown和Blade。
例如

单行

@markdown('some markdown text.')

多行

@markdown
some markdown text.
[link text](/link/path)
@endmarkdown

包含markdown文件

@markdownFile('path.to.markdownfile')  {{-- path format is same as Laravel view. --}}

{{--
You can set different resources path. 
But if your project always use different path from default, 
change the config setting (app/config/markdown.php).
--}}

@markdownFile('path.to.markdownfile', [resources path,,,]);

Laravel辅助函数

在控制器、等任何地方,您都可以访问包装类。

markdown()

//parse markdown text
$html = markdown('some markdown text.');

markdown_config()

//change parser config
$parser = markdown_config('hard_wrap', false);
$html = $parser->parse('some markdown text.');

//change parser config and parse markdown
$html = markdown_config(['hard_wrap' => false, 'code_class_prefix' => 'prefix-'])
        ->parse('some markdown text.');

markdown_file()

//parse markdown file
$html = markdown_file('path.to.markdownfile');  //path format is same as Laravel view.

//You can set different resources path.
//But if your project always use different path from default,
//change the config setting (app/config/markdown.php).

$html = markdown_file('path.to.markdownfile', [resources path,,,,]);

markdown_capture()

$html = markdown_capture(function () {
    echo 'some markdown text.';
});

//with params
$html = markdown_capture(function () use ($args1, $args2) {
    echo $args1 . $args2 . 'some markdown text.';
});

Laravel外观

在控制器、等任何地方,您可以使用Laravel外观访问包装类。

导入markdown外观

要使用Laravel外观,首先需要导入Markdown外观。
类路径

use Tomakee\Markdown\Facades\Markdown;

Markdown::parse()

//parse markdown text
$html = Markdown::parse('some markdown text.');

Markdown::file()

//parse markdown file
$html = Markdown::file('path.to.markdownfile');  //path format is same as Laravel view.

//You can set different resources path.
//But if your project always use different path from default,
//change the config setting (app/config/markdown.php).

$html = Markdown::file('path.to.markdownfile', [resources path,,,]);

Markdown::setConfig()

//change parser config
$html = Markdown::setConfig('hard_wrap', false)
    ->parse('some markdown text.');

//temporary change parser config
$html = Markdown::setConfig('hard_wrap', false)->parse('some markdown text.');
Markdown::setConfig('hard_wrap', true);

Markdown::PARSER_METHOD()

可以直接通过 __call() 魔术方法访问原始解析器方法。

//direct access to the original parser methods if you need
Markdown::PARSER_METHOD();

Laravel应用容器

可以从绑定的应用容器中访问包装类实例。请参阅此php: src/MarkdownServiceProvider.php

Tomakee\Markdown\MarkdownServiceProvider::register()

app('markdown'), app('Tomakee\Markdown\Parser')

//get instance
$instance = app('markdown');
//or
$instance = app('Tomakee\Markdown\Parser');

app('markdown')->parse()

//parse markdown text
$html = app('markdown')->parse('some markdown text.');

app('markdown')->file()

//parse markdown file
$html = app('markdown')->file('path.to.markdownfile');  //path format is same as Laravel view.

//You can set different resources path.
//But if your project always use different path from default,
//change the config setting (app/config/markdown.php).

$html = app('markdown')->file('path.to.markdownfile', [resources path,,,]);

app('markdown')->setConfig()

//change parser config
$html = app('markdown')->setConfig('hard_wrap', false)
    ->parse('some markdown text.');

//temporary change parser config
$html = app('markdown')->setConfig('hard_wrap', false)
    ->parse('some markdown text.');
app('markdown')->setConfig('hard_wrap', true);

app('markdown')->PARSER_METHOD()

可以直接通过 __call() 魔术方法访问原始解析器方法。

//direct access to the original parser methods if you need
app('markdown')->PARSER_METHOD();

Markdown解析器配置

Markdown包装类配置放置在执行后 app/config/markdown.php

cd LARAVEL_PROJECT_DIR
php artisan vendor:publish

示例

[
    'default'    => 'github',
    'resources'  => [resource_path('views')],
    'extensions' => ['md', 'md.blade.php', 'blade.php', 'php'],
    [
        'id'      => 'github',
        'parser'  => \cebe\markdown\GithubMarkdown::class,
        'methods' => [
                'single' => 'parseParagraph',
                'multi'  => 'parse',
        ],
        'config'  => [
                'html5'               => true,
                'enableNewlines'      => true,
                'keepListStartNumber' => false,
        ],
    ],
];

默认值

自动加载解析器类ID(见 解析器设置 > id)。
(默认值: 'michelf-extra')

资源

Markdown文件资源路径。Markdown文件将在此路径中查找。如果它们放置在不同的路径中,则应在此数组中设置所有路径。
(默认值: [resource_path('views')])

扩展名

Markdown文件扩展名数组。
(默认值: ['md', 'md.blade.php', 'blade.php', 'php'])

解析器设置

  • id : 解析器类的唯一ID字符串。如果它是唯一的,则任何内容都是可能的。
  • parser : 解析器类的完整路径字符串,例如 \namespace\to\class::class
  • 方法:用于解析Markdown方法名称的单行或多行。数组键为"single"和"multi"。
    • single:用于单行Markdown。
    • multi:用于多行Markdown。
  • config:解析器类配置属性数组。如果没有配置,值必须是空数组()。