From d7d630337e2664dc0b08e479d7dc2967612143bb Mon Sep 17 00:00:00 2001 From: David Bohn Date: Thu, 11 Aug 2022 09:43:01 +0200 Subject: [PATCH] Ignore missing code tag in code block parsing --- src/Nodes/CodeBlock.php | 4 ++++ tests/DOMParser/Nodes/CodeBlockTest.php | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) 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..b5a8f65 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 }', + ], + ], + ], + ], + ]); +});