diff --git a/src/Nodes/CodeBlock.php b/src/Nodes/CodeBlock.php index 44d1d0e..0adb03f 100644 --- a/src/Nodes/CodeBlock.php +++ b/src/Nodes/CodeBlock.php @@ -33,6 +33,10 @@ public function addAttributes() return [ 'language' => [ 'parseHTML' => function ($DOMNode) { + if (!($DOMNode->childNodes[0] instanceof \DOMElement)) { + return null; + } + return preg_replace( "/^" . $this->options['languageClassPrefix']. "/", "", diff --git a/tests/DOMParser/Nodes/CodeBlockTest.php b/tests/DOMParser/Nodes/CodeBlockTest.php index c14c8fa..6cbfa43 100644 --- a/tests/DOMParser/Nodes/CodeBlockTest.php +++ b/tests/DOMParser/Nodes/CodeBlockTest.php @@ -123,3 +123,24 @@ ], ]); }); + +test('it handles code blocks without a code tag', function () { + $html = '
body { display: none }
'; + + $result = (new Editor())->setContent($html)->getDocument(); + + expect($result)->toEqual([ + 'type' => 'doc', + 'content' => [ + [ + 'type' => 'codeBlock', + 'content' => [ + [ + 'type' => 'text', + 'text' => 'body { display: none }', + ], + ], + ], + ], + ]); +});