protected function compileNode(Node $node)
    {

        $method = 'compile'.ucfirst($node->type);

        if (!method_exists($this, $method))
            $this->throwException(
                "No handler $method found for $node->type found. It seems you have customized nodes. You need to ".
                "extend the Tale Pug Compiler and add own $method-method for the respective node type.",
                $node
            );

        //resolve expansions
        if (isset($node->expands)) {

            $current = $node;
            while (isset($current->expands)) {

                $expandedNode = $current->expands;
                unset($current->expands);

                $current->parent->insertBefore($current, $expandedNode);
                $current->parent->remove($current);
                $expandedNode->append($current);
                $current = $expandedNode;
            }

            return $this->compileNode($current);
        }

        return call_user_func([$this, $method], $node);
    }
protected function compileNode(Node $node)
    {

        $method = 'compile'.ucfirst($node->type);

        if (!method_exists($this, $method))
            $this->throwException(
                "No handler $method found for $node->type found. It seems you have customized nodes. You need to ".
                "extend the Tale Pug Compiler and add own $method-method for the respective node type.",
                $node
            );

        //resolve expansions
        if (isset($node->expands)) {

            $current = $node;
            while (isset($current->expands)) {

                $expandedNode = $current->expands;
                unset($current->expands);

                $current->parent->insertBefore($current, $expandedNode);
                $current->parent->remove($current);
                $expandedNode->append($current);
                $current = $expandedNode;
            }

            return $this->compileNode($current);
        }

        return call_user_func([$this, $method], $node);
    }
protected function compileNode ( Node $ node ) { $ method = 'compile' . ucfirst ( $ node -> type ) ; if ( ! method_exists ( $ this , $ method ) ) $ this -> throwException ( "No handler $method found for $node->type found. It seems you have customized nodes. You need to " . "extend the Tale Pug Compiler and add own $method-method for the respective node type." , $ node ) ; //resolve expansions if ( isset ( $ node -> expands ) ) { $ current = $ node ; while ( isset ( $ current -> expands ) ) { $ expandedNode = $ current -> expands ; unset ( $ current -> expands ) ; $ current -> parent -> insertBefore ( $ current , $ expandedNode ) ; $ current -> parent -> remove ( $ current ) ; $ expandedNode -> append ( $ current ) ; $ current = $ expandedNode ; } return $ this -> compileNode ( $ current ) ; } return call_user_func ( [ $ this , $ method ] , $ node ) ; }
Compiles any Node that has a matching method for its type.

e.g.
type: document, method: compileDocument
type: element, method: compileElement

The result will be PHTML

@param Node $node the Node to compile

@return string the compiled PHTML
@throws Exception when the compilation fails
Compiles any Node that has a matching method for its type .