]> BookStack Code Mirror - bookstack/blob - app/Entities/Tools/Markdown/MarkdownToHtml.php
ExportFormatter: Add book description and check for empty book and chapter descriptio...
[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\Environment\Environment;
8 use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
9 use League\CommonMark\Extension\CommonMark\Node\Block\ListItem;
10 use League\CommonMark\Extension\Table\TableExtension;
11 use League\CommonMark\Extension\TaskList\TaskListExtension;
12 use League\CommonMark\MarkdownConverter;
13
14 class MarkdownToHtml
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 = new Environment();
26         $environment->addExtension(new CommonMarkCoreExtension());
27         $environment->addExtension(new TableExtension());
28         $environment->addExtension(new TaskListExtension());
29         $environment->addExtension(new CustomStrikeThroughExtension());
30         $environment = Theme::dispatch(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, $environment) ?? $environment;
31         $converter = new MarkdownConverter($environment);
32
33         $environment->addRenderer(ListItem::class, new CustomListItemRenderer(), 10);
34
35         return $converter->convert($this->markdown)->getContent();
36     }
37 }