/** * @param Node $parent * @param int $padding * @param bool $omega * @param string $prefix * @return string */ protected function doDump(Node $parent, $padding = 0, $omega = false, $prefix = '') { $retval = ''; $xprefix = $prefix; if ($omega) { $prefix = $prefix . '└──'; } else { if ($padding > 0) { $prefix = $prefix . '├──'; } } $retval .= sprintf("%s%s\n", $prefix ? $prefix . ' ' : '', (string) $parent); $prefix = $xprefix; // reset $children = $parent->getNodes(); $count = count($children); if ($padding > 0) { if ($omega) { $prefix = $prefix . ' '; } else { $prefix = $prefix . '│ '; } } foreach ($children as $n => $node) { $omega = $count - 1 === $n; $retval .= $this->doDump($node, $padding + 1, $omega, $prefix); } return $retval; }