mnapoli / front-yaml
Installs: 2 480 489
Dependents: 45
Suggesters: 0
Security: 0
Stars: 252
Watchers: 7
Forks: 25
Open Issues: 5
Requires
- php: >=7.3
- erusev/parsedown: ~1.0
- symfony/yaml: ~2.1|^3.0|^4.0|^5.0
Requires (Dev)
- league/commonmark: ~1.4
- phpunit/phpunit: ^9.4
README
An implementation of YAML Front matter for PHP. Can parse the YAML and the Markdown.
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());