]> BookStack Code Mirror - bookstack/blob - app/Entities/Tools/Markdown/MarkdownToHtml.php
Added core editor switching functionality
[bookstack] / app / Entities / Tools / Markdown / MarkdownToHtml.php
1 <?php
2
3 namespace BookStack\Entities\Tools\Markdown;
4
5 use BookStack\Facades\Theme;
6 use BookStack\Theming\ThemeEvents;
7 use League\CommonMark\Block\Element\ListItem;
8 use League\CommonMark\CommonMarkConverter;
9 use League\CommonMark\Environment;
10 use League\CommonMark\Extension\Table\TableExtension;
11 use League\CommonMark\Extension\TaskList\TaskListExtension;
12
13 class MarkdownToHtml
14 {
15
16     protected string $markdown;
17
18     public function __construct(string $markdown)
19     {
20         $this->markdown = $markdown;
21     }
22
23     public function convert(): string
24     {
25         $environment = Environment::createCommonMarkEnvironment();
26         $environment->addExtension(new TableExtension());
27         $environment->addExtension(new TaskListExtension());
28         $environment->addExtension(new CustomStrikeThroughExtension());
29         $environment = Theme::dispatch(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, $environment) ?? $environment;
30         $converter = new CommonMarkConverter([], $environment);
31
32         $environment->addBlockRenderer(ListItem::class, new CustomListItemRenderer(), 10);
33
34         return $converter->convertToHtml($this->markdown);
35     }
36
37 }