Example #1
0
 function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
 {
     if ($node instanceof Twig_Node_Print) {
         // make sure that every {{ }} printed object is handled as a TFD_Node_Render node (aka autorender)
         if (!$node->getNode('expr') instanceof Twig_Node_Expression_Function) {
             if ($env->isAutoRender()) {
                 $targetNode = $node->getNode('expr');
                 if ($targetNode instanceof Twig_Node_Expression_Name) {
                     $targetNode->setAttribute('always_defined', TRUE);
                 }
                 if (!$targetNode instanceof Twig_Node_Expression_MethodCall) {
                     $node = new TFD_Node_Render($targetNode, $node->getLine(), $node->getNodeTag());
                 }
             }
         } elseif ($node->getNode('expr') instanceof Twig_Node_Expression_Function) {
             $targetNode = $node->getNode('expr');
             if ($targetNode->getAttribute('name') == 'hide') {
                 $targetNode = $this->castObject('TFD_Node_Expression_Nocall', $targetNode);
                 $targetNode->setAttribute('always_defined', TRUE);
                 $node = new TFD_Node_Hide($targetNode, $node->getLine(), $node->getNodeTag());
             }
         }
     }
     return $node;
 }