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;
15 protected string $markdown;
17 public function __construct(string $markdown)
19 $this->markdown = $markdown;
22 public function convert(): string
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);
31 $environment->addBlockRenderer(ListItem::class, new CustomListItemRenderer(), 10);
33 return $converter->convertToHtml($this->markdown);