diff --git a/Parsedown.php b/Parsedown.php index 0ac3e3d..eebd2f9 100644 --- a/Parsedown.php +++ b/Parsedown.php @@ -1631,6 +1631,22 @@ class Parsedown } protected function elementApplyRecursive($closure, array $Element) + { + $Element = call_user_func($closure, $Element); + + if (isset($Element['elements'])) + { + $Element['elements'] = $this->elementsApplyRecursive($closure, $Element['elements']); + } + elseif (isset($Element['element'])) + { + $Element['element'] = $this->elementApplyRecursive($closure, $Element['element']); + } + + return $Element; + } + + protected function elementApplyRecursiveDepthFirst($closure, array $Element) { if (isset($Element['elements'])) { @@ -1658,6 +1674,18 @@ class Parsedown return $newElements; } + protected function elementsApplyRecursiveDepthFirst($closure, array $Elements) + { + $newElements = array(); + + foreach ($Elements as $Element) + { + $newElements[] = $this->elementApplyRecursiveDepthFirst($closure, $Element); + } + + return $newElements; + } + protected function element(array $Element) { if ($this->safeMode)