made a small optimization when a macro does not take any argument

This commit is contained in:
Fabien Potencier
2011-09-24 14:20:57 +02:00
parent d472d21515
commit 5446d45f6e
+19 -9
View File
@@ -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()