You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.2 KiB
36 lines
1.2 KiB
<?php
|
|
use League\CommonMark\Environment\Environment;
|
|
use League\CommonMark\MarkdownConverter;
|
|
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
|
|
use League\CommonMark\Extension\GithubFlavoredMarkdownExtension;
|
|
use League\CommonMark\Extension\FrontMatter\FrontMatterExtension;
|
|
use League\CommonMark\Extension\FrontMatter\Output\RenderedContentWithFrontMatter;
|
|
use Symfony\Component\Yaml\Yaml;
|
|
|
|
|
|
function render_markdown($file) {
|
|
// Set up the environment with FrontMatter and GFM support
|
|
$environment = new Environment([]);
|
|
$environment->addExtension(new CommonMarkCoreExtension());
|
|
$environment->addExtension(new GithubFlavoredMarkdownExtension());
|
|
$environment->addExtension(new FrontMatterExtension());
|
|
|
|
$converter = new MarkdownConverter($environment);
|
|
|
|
$markdownText = file_get_contents($file);
|
|
// Convert markdown and extract front matter
|
|
/** @var RenderedContentWithFrontMatter $result */
|
|
$result = $converter->convert($markdownText);
|
|
|
|
// Parse YAML front matter
|
|
if ($result instanceof RenderedContentWithFrontMatter) {
|
|
$frontMatter = $result->getFrontMatter();
|
|
}
|
|
$html = $result->getContent();
|
|
|
|
// return result
|
|
return [
|
|
'meta' => $frontMatter,
|
|
'html' => $html,
|
|
];
|
|
}
|
|
|