Skip to content

Commit e526e91

Browse files
feat: table-parser & delimiter fix
1 parent c332019 commit e526e91

File tree

4 files changed

+51
-11
lines changed

4 files changed

+51
-11
lines changed

src/Parser/EditorjsParser.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@
66
use Exception;
77
use DOMDocument;
88
use Masterminds\HTML5;
9-
use SyntaxPhoenix\EJSParserBundle\Parser\EditorjsParserExtension;
9+
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\RawParser;
1010
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\CodeParser;
11-
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\DelimeterParser;
12-
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\EmbedParser;
13-
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\HeaderParser;
14-
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\ImageParser;
1511
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\LinkParser;
1612
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\ListParser;
17-
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\ParagraphParser;
18-
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\RawParser;
13+
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\EmbedParser;
14+
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\ImageParser;
15+
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\HeaderParser;
16+
use SyntaxPhoenix\EJSParserBundle\Parser\EditorjsParserExtension;
1917
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\WarningParser;
18+
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\DelimiterParser;
19+
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\ParagraphParser;
20+
use SyntaxPhoenix\EJSParserBundle\Parser\Extension\TableParser;
2021

2122
class EditorjsParser
2223
{
@@ -40,15 +41,16 @@ public function __construct(object $data)
4041

4142
$this->parser = [
4243
'header' => new HeaderParser(),
43-
'delimeter' => new DelimeterParser(),
44+
'delimiter' => new DelimiterParser(),
4445
'code' => new CodeParser(),
4546
'paragraph' => new ParagraphParser(),
4647
'link' => new LinkParser(),
4748
'embed' => new EmbedParser(),
4849
'raw' => new RawParser(),
4950
'list' => new ListParser(),
5051
'warning' => new WarningParser(),
51-
'simpleImage' => new ImageParser()
52+
'simpleImage' => new ImageParser(),
53+
'table' => new TableParser()
5254
];
5355
}
5456

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Masterminds\HTML5;
88
use SyntaxPhoenix\EJSParserBundle\Parser\EditorjsParserExtension;
99

10-
class DelimeterParser implements EditorjsParserExtension
10+
class DelimiterParser implements EditorjsParserExtension
1111
{
1212

1313
public function parseBlock(HTML5 $html5, DOMDocument $document, object $block, string $prefix): DOMElement
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace SyntaxPhoenix\EJSParserBundle\Parser\Extension;
4+
5+
use DOMElement;
6+
use DOMDocument;
7+
use Masterminds\HTML5;
8+
use SyntaxPhoenix\EJSParserBundle\Parser\EditorjsParserExtension;
9+
10+
class TableParser implements EditorjsParserExtension
11+
{
12+
13+
public function parseBlock(HTML5 $html5, DOMDocument $document, object $block, string $prefix): DOMElement
14+
{
15+
$wrapper = $document->createElement('div');
16+
17+
$wrapper->setAttribute('class', "{$prefix}-table");
18+
19+
$table = $document->createElement('table');
20+
21+
$tableBody = $document->createElement('tbody');
22+
23+
foreach ($block->data->content as $row) {
24+
$tableRow = $document->createElement('tr');
25+
foreach ($row as $item) {
26+
$tableDefinition = $document->createElement('td', $item);
27+
$tableRow->appendChild($tableDefinition);
28+
}
29+
$tableBody->appendChild($tableRow);
30+
}
31+
32+
$table->appendChild($tableBody);
33+
34+
$wrapper->appendChild($table);
35+
36+
return $wrapper;
37+
}
38+
}

src/Twig/EditorjsExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function getFunctions(): array
2222
/**
2323
* @param array $data
2424
*/
25-
public function editorjsParse(array $data = []): string
25+
public function editorjsParse(object $data): string
2626
{
2727
$parser = new EditorjsParser($data);
2828
return $parser->toHtml();

0 commit comments

Comments
 (0)