From e6dedfea61ede252f64328b46400a5c331dffed7 Mon Sep 17 00:00:00 2001 From: nicodemuz Date: Tue, 27 Jun 2023 14:22:38 +0800 Subject: [PATCH] Add support for table headings --- src/Parser/Extension/TableParser.php | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/Parser/Extension/TableParser.php b/src/Parser/Extension/TableParser.php index 44e6455..b4534b3 100644 --- a/src/Parser/Extension/TableParser.php +++ b/src/Parser/Extension/TableParser.php @@ -19,17 +19,31 @@ public function parseBlock(HTML5 $html5, DOMDocument $document, object $block, s $table = $document->createElement('table'); $tableBody = $document->createElement('tbody'); + $tableHead = $document->createElement('thead'); + + $withHeadings = isset($block->data->withHeadings) && $block->data->withHeadings === true; + + foreach ($block->data->content as $i => $row) { + $isHeadingRow = $i === 0 && $withHeadings; - foreach ($block->data->content as $row) { $tableRow = $document->createElement('tr'); foreach ($row as $item) { - $tableDefinition = $document->createElement('td'); + $tableDefinition = $document->createElement($isHeadingRow ? 'th' : 'td'); if (strlen($item) > 0) { $tableDefinition->appendChild($html5->loadHTMLFragment($item)); } $tableRow->appendChild($tableDefinition); - } - $tableBody->appendChild($tableRow); + } + + if ($isHeadingRow) { + $tableHead->appendChild($tableRow); + } else { + $tableBody->appendChild($tableRow); + } + } + + if ($withHeadings) { + $table->appendChild($tableHead); } $table->appendChild($tableBody);