78 lines
1.4 KiB
Markdown
78 lines
1.4 KiB
Markdown
|
# FrontYAML
|
||
|
|
||
|
An implementation of YAML Front matter for PHP. It can parse both YAML **and** Markdown.
|
||
|
|
||
|
[](https://packagist.org/packages/mnapoli/front-yaml)
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
Require the project with Composer:
|
||
|
|
||
|
```
|
||
|
composer require mnapoli/front-yaml
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
```php
|
||
|
$parser = new Mni\FrontYAML\Parser;
|
||
|
|
||
|
$document = $parser->parse($str);
|
||
|
|
||
|
$yaml = $document->getYAML();
|
||
|
$html = $document->getContent();
|
||
|
```
|
||
|
|
||
|
If you don't want the Markdown to be parsed (maybe because it is not Markdown):
|
||
|
|
||
|
```php
|
||
|
$document = $parser->parse($str, false);
|
||
|
```
|
||
|
|
||
|
## Example
|
||
|
|
||
|
The following file:
|
||
|
|
||
|
```markdown
|
||
|
---
|
||
|
foo: bar
|
||
|
---
|
||
|
This is **strong**.
|
||
|
```
|
||
|
|
||
|
Will give:
|
||
|
|
||
|
```php
|
||
|
var_export($document->getYAML());
|
||
|
// array("foo" => "bar")
|
||
|
|
||
|
var_export($document->getContent());
|
||
|
// "<p>This is <strong>strong</strong></p>"
|
||
|
```
|
||
|
|
||
|
## YAML and Markdown parsers
|
||
|
|
||
|
```php
|
||
|
$parser = new Mni\FrontYAML\Parser($yamlParser, $markdownParser);
|
||
|
```
|
||
|
|
||
|
This library uses dependency injection and abstraction to allow you to provide your own YAML or Markdown parser.
|
||
|
|
||
|
```php
|
||
|
interface YAMLParser
|
||
|
{
|
||
|
public function parse($yaml);
|
||
|
}
|
||
|
```
|
||
|
|
||
|
FrontYAML uses by default [Symfony's YAML parser](http://symfony.com/doc/current/components/yaml/introduction.html).
|
||
|
|
||
|
```php
|
||
|
interface MarkdownParser
|
||
|
{
|
||
|
public function parse($markdown);
|
||
|
}
|
||
|
```
|
||
|
|
||
|
FrontYAML uses by default the [League CommonMark parser](https://github.com/thephpleague/commonmark).
|