[svn] Add striptags filter.^
authorGeorg Brandl <georg@python.org>
Sat, 14 Apr 2007 22:47:37 +0000 (00:47 +0200)
committerGeorg Brandl <georg@python.org>
Sat, 14 Apr 2007 22:47:37 +0000 (00:47 +0200)
--HG--
branch : trunk

CHANGES
jinja/filters.py

diff --git a/CHANGES b/CHANGES
index 5f7a71c5a221c7282497e8c7a763f934ceaea968..18b727af39de387627de45a2123b24c4fe34698c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -41,6 +41,8 @@ Version 1.1
 
 - added `sum`, `abs` and `round` filters. This fixes #238
 
+- added `striptags` filter.
+
 
 Version 1.0
 -----------
index e1d7d65d720f0840b9bb9fe05c150e5d389d8520..c83ed6ab777545207c8b0dee61dad9e415d27199 100644 (file)
@@ -8,6 +8,7 @@
     :copyright: 2007 by Armin Ronacher.
     :license: BSD, see LICENSE for more details.
 """
+import re
 from random import choice
 from urllib import urlencode, quote
 from jinja.utils import urlize, escape
@@ -618,6 +619,16 @@ def do_capture(name='captured', clean=False):
     return wrapped
 
 
+def do_striptags(value, rex=re.compile(r'<[^>]+>')):
+    """
+    Strip SGML/XML tags and replace adjacent whitespace by one space.
+    
+    *new in Jinja 1.1*
+    """
+    return ' '.join(rex.sub('', value).split())
+do_striptags = stringfilter(do_striptags)
+
+
 def do_slice(slices, fill_with=None):
     """
     Slice an iterator and return a list of lists containing
@@ -787,6 +798,7 @@ FILTERS = {
     'format':               do_format,
     'capture':              do_capture,
     'trim':                 do_trim,
+    'striptags':            do_striptags,
     'slice':                do_slice,
     'batch':                do_batch,
     'sum':                  do_sum,