summaryrefslogtreecommitdiff
path: root/tests/regressiontests/templates/parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests/templates/parser.py')
-rw-r--r--tests/regressiontests/templates/parser.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/regressiontests/templates/parser.py b/tests/regressiontests/templates/parser.py
new file mode 100644
index 0000000000..6ad301d9c3
--- /dev/null
+++ b/tests/regressiontests/templates/parser.py
@@ -0,0 +1,59 @@
+"""
+Testing some internals of the template processing. These are *not* examples to be copied in user code.
+"""
+
+filter_parsing = r"""
+>>> from django.template import FilterExpression, Parser
+
+>>> c = {'article': {'section': u'News'}}
+>>> p = Parser("")
+>>> def fe_test(s): return FilterExpression(s, p).resolve(c)
+
+>>> fe_test('article.section')
+u'News'
+>>> fe_test('article.section|upper')
+u'NEWS'
+>>> fe_test(u'"News"')
+u'News'
+>>> fe_test(u"'News'")
+u'News'
+>>> fe_test(ur'"Some \"Good\" News"')
+u'Some "Good" News'
+>>> fe_test(ur"'Some \'Bad\' News'")
+u"Some 'Bad' News"
+
+>>> fe = FilterExpression(ur'"Some \"Good\" News"', p)
+>>> fe.filters
+[]
+>>> fe.var
+u'Some "Good" News'
+"""
+
+variable_parsing = r"""
+>>> from django.template import Variable
+
+>>> c = {'article': {'section': u'News'}}
+>>> Variable('article.section').resolve(c)
+u'News'
+>>> Variable(u'"News"').resolve(c)
+u'News'
+>>> Variable(u"'News'").resolve(c)
+u'News'
+
+Translated strings are handled correctly.
+
+>>> Variable('_(article.section)').resolve(c)
+u'News'
+>>> Variable('_("Good News")').resolve(c)
+u'Good News'
+>>> Variable("_('Better News')").resolve(c)
+u'Better News'
+
+Escaped quotes work correctly as well.
+
+>>> Variable(ur'"Some \"Good\" News"').resolve(c)
+u'Some "Good" News'
+>>> Variable(ur"'Some \'Better\' News'").resolve(c)
+u"Some 'Better' News"
+
+"""