2 Testing some internals of the template processing. These are *not* examples to be copied in user code.
6 Tests for TokenParser behavior in the face of quoted strings with spaces.
8 >>> from django.template import TokenParser
11 Test case 1: {% tag thevar|filter sometag %}
13 >>> p = TokenParser("tag thevar|filter sometag")
25 Test case 2: {% tag "a value"|filter sometag %}
27 >>> p = TokenParser('tag "a value"|filter sometag')
39 Test case 3: {% tag 'a value'|filter sometag %}
41 >>> p = TokenParser("tag 'a value'|filter sometag")
55 >>> from django.template import FilterExpression, Parser
57 >>> c = {'article': {'section': u'News'}}
59 >>> def fe_test(s): return FilterExpression(s, p).resolve(c)
61 >>> fe_test('article.section')
63 >>> fe_test('article.section|upper')
65 >>> fe_test(u'"News"')
67 >>> fe_test(u"'News'")
69 >>> fe_test(ur'"Some \"Good
\" News
"')
71 >>> fe_test(ur"'Some \'Bad\' News'")
74 >>> fe = FilterExpression(ur'"Some
\"Good
\" News
"', p)
80 Filtered variables should reject access of attributes beginning with underscores.
82 >>> FilterExpression('article._hidden|upper', p)
83 Traceback (most recent call last):
85 TemplateSyntaxError: Variables and attributes may not begin with underscores: 'article._hidden'
88 variable_parsing = r"""
89 >>> from django.template import Variable
91 >>> c = {'article': {'section': u'News'}}
92 >>> Variable('article.section').resolve(c)
94 >>> Variable(u'"News
"').resolve(c)
96 >>> Variable(u"'News'").resolve(c)
99 Translated strings are handled correctly.
101 >>> Variable('_(article.section)').resolve(c)
103 >>> Variable('_("Good News
")').resolve(c)
105 >>> Variable("_('Better News')").resolve(c)
108 Escaped quotes work correctly as well.
110 >>> Variable(ur'"Some
\"Good
\" News
"').resolve(c)
112 >>> Variable(ur"'Some \'Better\' News'").resolve(c)
113 u"Some
'Better' News
"
115 Variables should reject access of attributes beginning with underscores.
117 >>> Variable('article._hidden')
118 Traceback (most recent call last):
120 TemplateSyntaxError: Variables and attributes may not begin with underscores: 'article._hidden'