From: Fabien Potencier Date: Sat, 24 Sep 2011 12:20:57 +0000 (+0200) Subject: made a small optimization when a macro does not take any argument X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=5446d45f6e310c0287cfd60fe9c9436dab9ade27;p=web%2Fkonrad%2Ftwig.git made a small optimization when a macro does not take any argument --- diff --git a/lib/Twig/Node/Macro.php b/lib/Twig/Node/Macro.php index 9f95570..be74726 100644 --- a/lib/Twig/Node/Macro.php +++ b/lib/Twig/Node/Macro.php @@ -38,22 +38,32 @@ class Twig_Node_Macro extends Twig_Node ->addDebugInfo($this) ->write(sprintf("public function get%s(%s)\n", $this->getAttribute('name'), implode(', ', $arguments)), "{\n") ->indent() - ->write("\$context = array_merge(\$this->env->getGlobals(), array(\n") - ->indent() ; - foreach ($this->getNode('arguments') as $argument) { + if (!count($this->getNode('arguments'))) { + $compiler->write("\$context = \$this->env->getGlobals();\n\n"); + } else { $compiler - ->write('') - ->string($argument->getAttribute('name')) - ->raw(' => $'.$argument->getAttribute('name')) - ->raw(",\n") + ->write("\$context = array_merge(\$this->env->getGlobals(), array(\n") + ->indent() + ; + + foreach ($this->getNode('arguments') as $argument) { + $compiler + ->write('') + ->string($argument->getAttribute('name')) + ->raw(' => $'.$argument->getAttribute('name')) + ->raw(",\n") + ; + } + + $compiler + ->outdent() + ->write("));\n\n") ; } $compiler - ->outdent() - ->write("));\n\n") ->write("ob_start();\n") ->write("try {\n") ->indent()