removed Twig_Template instances from the debug tag output (closes #73)
authorFabien Potencier <fabien.potencier@gmail.com>
Mon, 28 Jun 2010 10:36:53 +0000 (12:36 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Mon, 28 Jun 2010 10:37:12 +0000 (12:37 +0200)
CHANGELOG
lib/Twig/Node/Debug.php
test/Twig/Tests/Node/DebugTest.php

index 20ced20..300514e 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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
index 1832c7d..7f46b53 100644 (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")
         ;
index 1e1e14b..f67c593 100644 (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
         );