removed Twig_Template instances from the debug tag output (closes #73)

This commit is contained in:
Fabien Potencier
2010-06-28 12:36:53 +02:00
parent 1698c8834d
commit ad052d8ed2
3 changed files with 28 additions and 6 deletions
+1
View File
@@ -1,5 +1,6 @@
* 0.9.8
* removed Twig_Template instances from the debug tag output
* fixed objects with __isset() defined
* fixed set tag when used with a capture
* fixed type hinting for Twig_Environment::addFilter() method
+19 -4
View File
@@ -35,17 +35,32 @@ class Twig_Node_Debug extends Twig_Node
$compiler
->write("if (\$this->env->isDebug()) {\n")
->indent()
->write('var_export(')
;
if (null === $this->expr) {
$compiler->raw('$context');
// remove embedded templates (macros) from the context
$compiler
->write("\$vars = array();\n")
->write("foreach (\$context as \$key => \$value) {\n")
->indent()
->write("if (!\$value instanceof Twig_Template) {\n")
->indent()
->write("\$vars[\$key] = \$value;\n")
->outdent()
->write("}\n")
->outdent()
->write("}\n")
->write("print_r(\$vars);\n")
;
} else {
$compiler->subcompile($this->expr);
$compiler
->write("print_r(")
->subcompile($this->expr)
->raw(");\n")
;
}
$compiler
->raw(");\n")
->outdent()
->write("}\n")
;
+8 -2
View File
@@ -41,7 +41,13 @@ class Twig_Tests_Node_DebugTest extends Twig_Tests_Node_TestCase
$tests[] = array(new Twig_Node_Debug(null, 0), <<<EOF
if (\$this->env->isDebug()) {
var_export(\$context);
\$vars = array();
foreach (\$context as \$key => \$value) {
if (!\$value instanceof Twig_Template) {
\$vars[\$key] = \$value;
}
}
print_r(\$vars);
}
EOF
);
@@ -51,7 +57,7 @@ EOF
$tests[] = array($node, <<<EOF
if (\$this->env->isDebug()) {
var_export((isset(\$context['foo']) ? \$context['foo'] : null));
print_r((isset(\$context['foo']) ? \$context['foo'] : null));
}
EOF
);