1<?php
2
3declare(strict_types=1);
4
5/*
6 * This is part of the league/commonmark package.
7 *
8 * (c) Martin Hasoň <martin.hason@gmail.com>
9 * (c) Webuni s.r.o. <info@webuni.cz>
10 * (c) Colin O'Dell <colinodell@gmail.com>
11 *
12 * For the full copyright and license information, please view the LICENSE
13 * file that was distributed with this source code.
14 */
15
16namespace League\CommonMark\Extension\Table;
17
18use League\CommonMark\Node\Node;
19use League\CommonMark\Renderer\ChildNodeRendererInterface;
20use League\CommonMark\Renderer\NodeRendererInterface;
21use League\CommonMark\Util\HtmlElement;
22use League\CommonMark\Xml\XmlNodeRendererInterface;
23
24final class TableRowRenderer implements NodeRendererInterface, XmlNodeRendererInterface
25{
26    /**
27     * @param TableRow $node
28     *
29     * {@inheritDoc}
30     *
31     * @psalm-suppress MoreSpecificImplementedParamType
32     */
33    public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable
34    {
35        TableRow::assertInstanceOf($node);
36
37        $attrs = $node->data->get('attributes');
38
39        $separator = $childRenderer->getInnerSeparator();
40
41        return new HtmlElement('tr', $attrs, $separator . $childRenderer->renderNodes($node->children()) . $separator);
42    }
43
44    public function getXmlTagName(Node $node): string
45    {
46        return 'table_row';
47    }
48
49    /**
50     * {@inheritDoc}
51     */
52    public function getXmlAttributes(Node $node): array
53    {
54        return [];
55    }
56}
57