Files

37 lines
1.2 KiB
PHP
Raw Permalink Normal View History

2025-06-09 20:59:09 -06:00
<?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,
];
}