]> BookStack Code Mirror - bookstack/blob - app/Entities/Tools/Markdown/MarkdownToHtml.php
Extracted shortcut text to language files
[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     protected string $markdown;
16
17     public function __construct(string $markdown)
18     {
19         $this->markdown = $markdown;
20     }
21
22     public function convert(): string
23     {
24         $environment = Environment::createCommonMarkEnvironment();
25         $environment->addExtension(new TableExtension());
26         $environment->addExtension(new TaskListExtension());
27         $environment->addExtension(new CustomStrikeThroughExtension());
28         $environment = Theme::dispatch(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, $environment) ?? $environment;
29         $converter = new CommonMarkConverter([], $environment);
30
31         $environment->addBlockRenderer(ListItem::class, new CustomListItemRenderer(), 10);
32
33         return $converter->convertToHtml($this->markdown);
34     }
35 }