]> BookStack Code Mirror - bookstack/blob - app/Entities/Tools/Markdown/CustomListItemRenderer.php
Altered mysql start command in workflows
[bookstack] / app / Entities / Tools / Markdown / CustomListItemRenderer.php
1 <?php
2
3 namespace BookStack\Entities\Tools\Markdown;
4
5 use League\CommonMark\Block\Element\AbstractBlock;
6 use League\CommonMark\Block\Element\ListItem;
7 use League\CommonMark\Block\Element\Paragraph;
8 use League\CommonMark\Block\Renderer\BlockRendererInterface;
9 use League\CommonMark\Block\Renderer\ListItemRenderer;
10 use League\CommonMark\ElementRendererInterface;
11 use League\CommonMark\Extension\TaskList\TaskListItemMarker;
12 use League\CommonMark\HtmlElement;
13
14 class CustomListItemRenderer implements BlockRendererInterface
15 {
16     protected $baseRenderer;
17
18     public function __construct()
19     {
20         $this->baseRenderer = new ListItemRenderer();
21     }
22
23     /**
24      * @return HtmlElement|string|null
25      */
26     public function render(AbstractBlock $block, ElementRendererInterface $htmlRenderer, bool $inTightList = false)
27     {
28         $listItem = $this->baseRenderer->render($block, $htmlRenderer, $inTightList);
29
30         if ($this->startsTaskListItem($block)) {
31             $listItem->setAttribute('class', 'task-list-item');
32         }
33
34         return $listItem;
35     }
36
37     private function startsTaskListItem(ListItem $block): bool
38     {
39         $firstChild = $block->firstChild();
40
41         return $firstChild instanceof Paragraph && $firstChild->firstChild() instanceof TaskListItemMarker;
42     }
43 }