diff --git a/src/Core/DOMParser.php b/src/Core/DOMParser.php index a261ad3..8baefd3 100644 --- a/src/Core/DOMParser.php +++ b/src/Core/DOMParser.php @@ -122,6 +122,17 @@ private function processChildren($node): array return $this->mergeSimilarNodes($nodes); } + private function isMultidimensionalArray($array) + { + foreach ($array as $value) { + if (is_array($value)) { + return true; + } + } + + return false; + } + private function mergeSimilarNodes($nodes) { $result = []; @@ -131,10 +142,7 @@ private function mergeSimilarNodes($nodes) */ array_reduce($nodes, function ($carry, $node) use (&$result) { // Ignore multidimensional arrays - if ( - count($node) !== count($node, COUNT_RECURSIVE) - || count($carry) !== count($carry, COUNT_RECURSIVE) - ) { + if ($this->isMultidimensionalArray($node) || $this->isMultidimensionalArray($carry)) { $result[] = $node; return $node; diff --git a/tests/DOMParser/EmptyNodesTest.php b/tests/DOMParser/EmptyNodesTest.php new file mode 100644 index 0000000..7869e79 --- /dev/null +++ b/tests/DOMParser/EmptyNodesTest.php @@ -0,0 +1,25 @@ +

'; + + $result = (new Editor) + ->setContent($html) + ->getDocument(); + + expect($result)->toEqual([ + 'type' => 'doc', + 'content' => [ + [ + 'type' => 'paragraph', + 'content' => [], + ], + [ + 'type' => 'paragraph', + 'content' => [], + ], + ], + ]); +});