Rebuild article system
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<?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,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user