DavidBadura/markdown-builder

Markdown Builder

1.1.1 2021-10-23 09:22 UTC

README

Mutation testing badge Type Coverage Latest Stable Version License

一个简单的助手类,用于创建Markdown。

安装

composer require 'davidbadura/markdown-builder'

使用方法

$builder = new MarkdownBuilder();

$builder
    ->h1('Markdown Builder')
    ->p('A simple helper class to create markdown.')
    ->h2('Install ' . $builder->inlineBold('this') . ' powerfull library')
    ->code("composer require 'davidbadura/markdown-builder@dev'", 'bash')
    ->h2('Todos')
    ->bulletedList([
        'write tests',
        (string)$builder
            ->block()
            ->numberedList(['A', 'B', 'C'])
        ,
        'add more markdown features'
    ]);
    
echo $builder->getMarkdown();
Markdown Builder
================

A simple helper class to create markdown.

Install **this** powerfull library
----------------------------------

```bash
composer require 'davidbadura/markdown-builder@dev'
```

Todos
-----
* write tests
* 1. A
  2. B
  3. C
* add more markdown features

API

Markdown Builder有两种元素,分别是块元素和内联元素。块元素将被缓冲,你可以通过调用方法getMarkdown()来获取Markdown。所有内联元素都以inline*为前缀,你可以立即得到Markdown输出。

块元素

h1

PHP-代码

echo (new MarkdownBuilder())->h1('Hello World')->getMarkdown();

Markdown

Hello World
===========

h2

PHP-代码

echo (new MarkdownBuilder())->h2('Hello second world')->getMarkdown();

Markdown

Hello second world
------------------

h3

PHP-代码

echo (new MarkdownBuilder())->h3('My name is...')->getMarkdown();

Markdown

### My name is...

p

PHP-代码

echo (new MarkdownBuilder())->p('paragraph')->getMarkdown();

Markdown

paragraph

引用块

PHP-代码

echo (new MarkdownBuilder())->blockquote("Foo\nBar\nBaz")->getMarkdown();

Markdown

> Foo
> Bar
> Baz

项目符号列表

PHP-代码

echo (new MarkdownBuilder())->bulletedList(['Foo', 'Bar', 'Baz'])->getMarkdown();

Markdown

* Foo
* Bar
* Baz

编号列表

PHP-代码

echo (new MarkdownBuilder())->numberedList(['Foo', 'Bar', 'Baz'])->getMarkdown();

Markdown

1. Foo
2. Bar
3. Baz

水平线

PHP-代码

echo (new MarkdownBuilder())->hr()->getMarkdown();

Markdown

------------------------

代码

PHP-代码

echo (new MarkdownBuilder())->code('$var = "test";', 'php')->getMarkdown();

Markdown

```php
$var = "test";
```

表格

PHP-代码

echo (new MarkdownBuilder())->table(
    ['col0', 'col1'],
    [
        ['row01', 'row01'],
        ['row10', 'row11'],
    ],
    [Alignment::CENTER, Alignment::RIGHT]
)->getMarkdown();

Markdown

|col0|col1|
|:-:|-:|
|row01|row01|

内联块

粗体

PHP-代码

echo (new MarkdownBuilder())->inlineBold('Hey!');

Markdown

**Hey!**

斜体

PHP-代码

echo (new MarkdownBuilder())->inlineItalic('huhu');

Markdown

*huhu*

代码

PHP-代码

echo (new MarkdownBuilder())->inlineCode('$var = "test";');

Markdown

`$var = "test";`

链接

PHP-代码

echo (new MarkdownBuilder())->inlineLink('http://google.de', 'Google', 'Title');

Markdown

[Google](http://google.de "Title")

图片

PHP-代码

echo (new MarkdownBuilder())->inlineImg('cat.jpg', 'Cat', 'Title');

Markdown

![Cat](cat.jpg "Title")

高级特性

如果你需要可折叠的块,你可以创建一个新的带有自己的清洁缓冲区的Builder实例。这可以通过调用block()来完成。

PHP-代码

$builder = new MarkdownBuilder();
$builder->blockqoute(
    (string)$builder
      ->block()
      ->h1('Lists')
      ->bulletedList([
        'Foo',
        $builder->block()->numberedList(['A', 'B', 'C']),
        'Bar'
      ])
);

Markdown

>  Lists
>  =====
>
>  * Foo
>  * 1. A
>    2. B
>    3. C
>  * Bar