[svn] documented debug.foobar and added it to the CHANGES
authorArmin Ronacher <armin.ronacher@active-4.com>
Sat, 14 Apr 2007 22:56:32 +0000 (00:56 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Sat, 14 Apr 2007 22:56:32 +0000 (00:56 +0200)
--HG--
branch : trunk

CHANGES
docs/src/designerdoc.txt
jinja/utils.py

diff --git a/CHANGES b/CHANGES
index 18b727af39de387627de45a2123b24c4fe34698c..2d3482168cca80d4930710b3a0bb017eefd16e4b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,9 @@ Version 1.1
 - debugging system improved, smaller filesize for the cached files.
   Debugging works now well for any module using linecache.
 
+- ``{{ debug() }}`` can now be used to get a list of filters and
+  tags.
+
 - added whitespace management system for the template designer.
 
 - some small bugfixes.
index 05db1d007eb8394de27de9a8c177a227860a6790..2f5dcc70fc81d216396de4602ab83e3a4a179762 100644 (file)
@@ -132,6 +132,20 @@ These tests are especially useful when used in `if` conditions.
 
 [[list_of_tests]]
 
+*new in Jinja 1.1*:
+
+Because the application can provide additional tests you can get a documentation
+of all the provided tests by calling ``debug.tests()``:
+
+.. sourcecode:: jinja
+
+    {{ debug.tests() }}
+        -> returns a plain text representation of all the tests
+
+    {{ debug.tests(False) }}
+        -> same as above but without the builtin ones.
+
+
 Global Functions
 ================
 
index 33afac713f8f97413b2b0052b2d440e45dfba615..c233945a010ed0ba811e5a6c1fde97ce48b46ff2 100644 (file)
@@ -400,6 +400,24 @@ class DebugHelper(object):
         return '\n\n'.join(result)
     filters.jinja_context_callable = True
 
+    def tests(self, env, context, builtins=True):
+        """List the tests."""
+        from inspect import getdoc
+        strip = set()
+        if not builtins:
+            from jinja.defaults import DEFAULT_TESTS
+            strip = set(DEFAULT_TESTS.values())
+        tests = env.tests.items()
+        tests.sort(lambda a, b: cmp(a[0].lower(), b[0].lower()))
+        result = []
+        for name, f in tests:
+            if f in strip:
+                continue
+            doc = '\n'.join('    ' + x for x in (getdoc(f) or '').splitlines())
+            result.append('`%s`\n\n%s' % (name, doc))
+        return '\n\n'.join(result)
+    tests.jinja_context_callable = True
+
     def __str__(self):
         print 'use debug() for debugging the context'