3 namespace BookStack\Entities\Tools\Markdown;
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;
16 protected string $markdown;
18 public function __construct(string $markdown)
20 $this->markdown = $markdown;
23 public function convert(): string
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);
32 $environment->addBlockRenderer(ListItem::class, new CustomListItemRenderer(), 10);
34 return $converter->convertToHtml($this->markdown);