xref: /plugin/commonmark/src/Dokuwiki/Plugin/Commonmark/Commonmark.php (revision b0a36678775785ae4bed10dd2dcf9b3c90beb0c1)
18ec9a8f2SSungbin Jeon<?php
28ec9a8f2SSungbin Jeon
38ec9a8f2SSungbin Jeonnamespace Dokuwiki\Plugin\Commonmark;
48ec9a8f2SSungbin Jeon
594a075eeSSungbin Jeonuse League\CommonMark\Environment\Environment;
694a075eeSSungbin Jeonuse League\CommonMark\Parser\MarkdownParser;
71e536badSSungbin Jeonuse Dokuwiki\Plugin\Commonmark\Extension\CommonmarkToDokuwikiExtension;
8f46768a8SSungbin Jeonuse Dokuwiki\Plugin\Commonmark\Extension\FootnoteToDokuwikiExtension;
978c882e7SSungbin Jeonuse League\CommonMark\Extension\Strikethrough\StrikethroughExtension;
10656793f4SSungbin Jeonuse Dokuwiki\Plugin\Commonmark\Extension\TableExtension;
118ec9a8f2SSungbin Jeon
128ec9a8f2SSungbin Jeonclass Commonmark {
138ec9a8f2SSungbin Jeon    public static function RendtoDW($markdown): string {
148ec9a8f2SSungbin Jeon        # create environment
158ec9a8f2SSungbin Jeon        $environment = self::createDWEnvironment();
168ec9a8f2SSungbin Jeon
178ec9a8f2SSungbin Jeon        # create parser
1894a075eeSSungbin Jeon        $parser = new MarkdownParser($environment);
198ec9a8f2SSungbin Jeon        # create Dokuwiki Renderer
208ec9a8f2SSungbin Jeon        $DWRenderer = new DWRenderer($environment);
218ec9a8f2SSungbin Jeon
228ec9a8f2SSungbin Jeon        $document = $parser->parse($markdown);
23*b0a36678SSungbin Jeon        return $DWRenderer->renderNode($document);
248ec9a8f2SSungbin Jeon    }
258ec9a8f2SSungbin Jeon
268ec9a8f2SSungbin Jeon    public static function createDWEnvironment(): Environment {
27*b0a36678SSungbin Jeon        $config = [];
28*b0a36678SSungbin Jeon        $environment = new Environment($config);
298ec9a8f2SSungbin Jeon        $environment->addExtension(new CommonMarkToDokuWikiExtension());
30f46768a8SSungbin Jeon        $environment->addExtension(new FootnoteToDokuwikiExtension());
3178c882e7SSungbin Jeon        $environment->addExtension(new StrikethroughExtension());
32656793f4SSungbin Jeon        $environment->addExtension(new TableExtension());
33f46768a8SSungbin Jeon
34f46768a8SSungbin Jeon        $environment->mergeConfig([
35f46768a8SSungbin Jeon            'html_input' => 'strip',
36f46768a8SSungbin Jeon        ]);
378ec9a8f2SSungbin Jeon
388ec9a8f2SSungbin Jeon        return $environment;
398ec9a8f2SSungbin Jeon    }
408ec9a8f2SSungbin Jeon}
418ec9a8f2SSungbin Jeon
428ec9a8f2SSungbin Jeon?>