1<?php 2 3declare(strict_types=1); 4 5/* 6 * This file is part of the league/commonmark package. 7 * 8 * (c) Colin O'Dell <colinodell@gmail.com> 9 * 10 * For the full copyright and license information, please view the LICENSE 11 * file that was distributed with this source code. 12 */ 13 14namespace League\CommonMark\Extension\TableOfContents; 15 16use League\CommonMark\Node\Node; 17use League\CommonMark\Renderer\ChildNodeRendererInterface; 18use League\CommonMark\Renderer\NodeRendererInterface; 19use League\CommonMark\Xml\XmlNodeRendererInterface; 20 21final class TableOfContentsRenderer implements NodeRendererInterface, XmlNodeRendererInterface 22{ 23 /** @var NodeRendererInterface&XmlNodeRendererInterface */ 24 private $innerRenderer; 25 26 /** 27 * @psalm-param NodeRendererInterface&XmlNodeRendererInterface $innerRenderer 28 * 29 * @phpstan-param NodeRendererInterface&XmlNodeRendererInterface $innerRenderer 30 */ 31 public function __construct(NodeRendererInterface $innerRenderer) 32 { 33 $this->innerRenderer = $innerRenderer; 34 } 35 36 /** 37 * {@inheritDoc} 38 */ 39 public function render(Node $node, ChildNodeRendererInterface $childRenderer) 40 { 41 return $this->innerRenderer->render($node, $childRenderer); 42 } 43 44 public function getXmlTagName(Node $node): string 45 { 46 return 'table_of_contents'; 47 } 48 49 /** 50 * @return array<string, scalar> 51 */ 52 public function getXmlAttributes(Node $node): array 53 { 54 return $this->innerRenderer->getXmlAttributes($node); 55 } 56} 57