From: Fabien Potencier Date: Wed, 27 Jul 2011 08:12:28 +0000 (+0200) Subject: changed previous commit to preserve better BC X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=21c96d1ef41db6a796f8722f7d3472522a54ccd8;p=konrad%2Ftwig.git changed previous commit to preserve better BC --- diff --git a/lib/Twig/Node/BlockReference.php b/lib/Twig/Node/BlockReference.php index d39a12c..53f6287 100644 --- a/lib/Twig/Node/BlockReference.php +++ b/lib/Twig/Node/BlockReference.php @@ -20,12 +20,7 @@ class Twig_Node_BlockReference extends Twig_Node implements Twig_NodeOutputInter { public function __construct($name, $lineno, $tag = null) { - // hack to be BC - if ($name instanceof Twig_NodeInterface) { - parent::__construct(array('name' => $name), array(), $lineno, $tag); - } else { - parent::__construct(array(), array('name' => $name), $lineno, $tag); - } + parent::__construct(array(), array('name' => $name), $lineno, $tag); } /** @@ -35,18 +30,9 @@ class Twig_Node_BlockReference extends Twig_Node implements Twig_NodeOutputInter */ public function compile(Twig_Compiler $compiler) { - if ($this->hasNode('name')) { - $compiler - ->addDebugInfo($this) - ->write("\$this->displayBlock(") - ->subcompile($this->getNode('name')) - ->raw(", \$context, \$blocks);\n") - ; - } else { - $compiler - ->addDebugInfo($this) - ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) - ; - } + $compiler + ->addDebugInfo($this) + ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) + ; } } diff --git a/lib/Twig/Node/OptimizedBlockReference.php b/lib/Twig/Node/OptimizedBlockReference.php new file mode 100644 index 0000000..f694091 --- /dev/null +++ b/lib/Twig/Node/OptimizedBlockReference.php @@ -0,0 +1,40 @@ + + */ +class Twig_Node_OptimizedBlockReference extends Twig_Node_BlockReference implements Twig_NodeOutputInterface +{ + public function __construct(Twig_NodeInterface $name, $lineno, $tag = null) + { + call_user_func('Twig_Node::__construct', array('name' => $name), array(), $lineno, $tag); + } + + /** + * Compiles the node to PHP. + * + * @param Twig_Compiler A Twig_Compiler instance + */ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write("\$this->displayBlock(") + ->subcompile($this->getNode('name')) + ->raw(", \$context, \$blocks);\n") + ; + } +} diff --git a/lib/Twig/NodeVisitor/Optimizer.php b/lib/Twig/NodeVisitor/Optimizer.php index 4834775..7955b68 100644 --- a/lib/Twig/NodeVisitor/Optimizer.php +++ b/lib/Twig/NodeVisitor/Optimizer.php @@ -83,7 +83,7 @@ class Twig_NodeVisitor_Optimizer implements Twig_NodeVisitorInterface protected function optimizeRenderBlock($node, $env) { if ($node instanceof Twig_Node_Print && $node->getNode('expr') instanceof Twig_Node_Expression_BlockReference) { - return new Twig_Node_BlockReference($node->getNode('expr')->getNode('name'), $node->getLine(), $node->getNodeTag()); + return new Twig_Node_OptimizedBlockReference($node->getNode('expr')->getNode('name'), $node->getLine(), $node->getNodeTag()); } return $node;