33
44use League \CommonMark \Environment \Environment ;
55use League \CommonMark \Extension \CommonMark \Node \Block \FencedCode ;
6+ use League \CommonMark \Extension \FrontMatter \Data \FrontMatterDataParserInterface ;
7+ use League \CommonMark \Extension \FrontMatter \FrontMatterExtension ;
8+ use League \CommonMark \Extension \FrontMatter \Output \RenderedContentWithFrontMatter ;
69use League \CommonMark \Node \Query ;
710use League \CommonMark \Parser \MarkdownParser ;
811use Wnx \CommonmarkMarkdownRenderer \MarkdownRendererExtension ;
@@ -14,6 +17,15 @@ require __DIR__ . '/../vendor/autoload.php';
1417
1518$ environment = new Environment ([]);
1619$ environment ->addExtension (new MarkdownRendererExtension ());
20+ $ environment ->addExtension (new FrontMatterExtension (
21+ // keep the raw YAML string so it round-trips byte-identically
22+ new class implements FrontMatterDataParserInterface {
23+ public function parse (string $ frontMatter ): string
24+ {
25+ return $ frontMatter ;
26+ }
27+ },
28+ ));
1729
1830$ parser = new MarkdownParser ($ environment );
1931$ markdownRenderer = new MarkdownRenderer ($ environment );
@@ -62,7 +74,14 @@ foreach ($finder as $file) {
6274 $ node ->setLiteral (trim ($ code ));
6375 }
6476
65- file_put_contents ($ file ->getPathname (), $ markdownRenderer ->renderDocument ($ document ));
77+ $ rendered = $ markdownRenderer ->renderDocument ($ document );
78+ $ output = $ rendered ->getContent ();
79+
80+ if ($ rendered instanceof RenderedContentWithFrontMatter) {
81+ $ output = $ rendered ->getFrontMatter () . "--- \n" . $ output ;
82+ }
83+
84+ file_put_contents ($ file ->getPathname (), $ output );
6685}
6786
6887if (file_exists ($ targetDir )) {
0 commit comments