/FrontYAML

YAML Front matter parser

Primary LanguagePHPOtherNOASSERTION

FrontYAML

An implementation of YAML Front matter for PHP. Can parse the YAML and the Markdown.

Build Status Total Downloads

Installation

Require the project with Composer:

composer require mnapoli/front-yaml

Usage

$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):

$document = $parser->parse($str, false);

Example

The following file:

---
foo: bar
---
This is **strong**.

Will give:

var_export($document->getYAML());
// array("foo" => "bar")

var_export($document->getContent());
// "<p>This is <strong>strong</strong></p>"

YAML and Markdown parsers

$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.

interface YAMLParser
{
    public function parse($yaml);
}

FrontYAML uses by default Symfony's YAML parser.

interface MarkdownParser
{
    public function parse($markdown);
}

FrontYAML uses by default Parsedown Markdown parser.

An adapter to League CommonMark is also included (you need to require the league/commonmark though):

use \Mni\FrontYAML\Bridge\CommonMark\CommonMarkParser;

$parser = new Mni\FrontYAML\Parser(null, new CommonMarkParser());