function show_nodes($jade, $file) { $p = new \Jade\Parser($jade, $file); $ast = $p->parse(); $print_nodes = function ($node, $indent = 0) use(&$print_nodes) { $result = ''; if (is_array($node)) { foreach ($node as $n) { $result .= $print_nodes($n, $indent + 1); } } else { if (get_class($node) == 'Nodes\\Tag') { $result .= str_repeat(' ', $indent * 2) . get_class($node) . ' name=' . $node->name . "\n"; } elseif (get_class($node) == 'Nodes\\Filter') { $result .= str_repeat(' ', $indent * 2) . get_class($node) . ' filter_name=' . $node->name . "\n"; } else { $result .= str_repeat(' ', $indent * 2) . get_class($node) . "\n"; } if (isset($node->isBlock) && $node->isBlock == true) { $result .= $print_nodes($node->nodes, $indent + 1); } if (isset($node->block)) { $result .= $print_nodes($node->block, $indent + 1); } } return $result; }; return $print_nodes($ast); }