Add Django-1.2.1
[frozenviper.git] / Django-1.2.1 / tests / regressiontests / templates / parser.py
blob4db54556ed6c7fd75f7ede41232f5dfd04844f08
1 """
2 Testing some internals of the template processing. These are *not* examples to be copied in user code.
3 """
5 token_parsing=r"""
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")
14 >>> p.tagname
15 'tag'
16 >>> p.value()
17 'thevar|filter'
18 >>> p.more()
19 True
20 >>> p.tag()
21 'sometag'
22 >>> p.more()
23 False
25 Test case 2: {% tag "a value"|filter sometag %}
27 >>> p = TokenParser('tag "a value"|filter sometag')
28 >>> p.tagname
29 'tag'
30 >>> p.value()
31 '"a value"|filter'
32 >>> p.more()
33 True
34 >>> p.tag()
35 'sometag'
36 >>> p.more()
37 False
39 Test case 3: {% tag 'a value'|filter sometag %}
41 >>> p = TokenParser("tag 'a value'|filter sometag")
42 >>> p.tagname
43 'tag'
44 >>> p.value()
45 "'a value'|filter"
46 >>> p.more()
47 True
48 >>> p.tag()
49 'sometag'
50 >>> p.more()
51 False
52 """
54 filter_parsing = r"""
55 >>> from django.template import FilterExpression, Parser
57 >>> c = {'article': {'section': u'News'}}
58 >>> p = Parser("")
59 >>> def fe_test(s): return FilterExpression(s, p).resolve(c)
61 >>> fe_test('article.section')
62 u'News'
63 >>> fe_test('article.section|upper')
64 u'NEWS'
65 >>> fe_test(u'"News"')
66 u'News'
67 >>> fe_test(u"'News'")
68 u'News'
69 >>> fe_test(ur'"Some \"Good\" News"')
70 u'Some "Good" News'
71 >>> fe_test(ur"'Some \'Bad\' News'")
72 u"Some 'Bad' News"
74 >>> fe = FilterExpression(ur'"Some \"Good\" News"', p)
75 >>> fe.filters
77 >>> fe.var
78 u'Some "Good" News'
80 Filtered variables should reject access of attributes beginning with underscores.
82 >>> FilterExpression('article._hidden|upper', p)
83 Traceback (most recent call last):
84 ...
85 TemplateSyntaxError: Variables and attributes may not begin with underscores: 'article._hidden'
86 """
88 variable_parsing = r"""
89 >>> from django.template import Variable
91 >>> c = {'article': {'section': u'News'}}
92 >>> Variable('article.section').resolve(c)
93 u'News'
94 >>> Variable(u'"News"').resolve(c)
95 u'News'
96 >>> Variable(u"'News'").resolve(c)
97 u'News'
99 Translated strings are handled correctly.
101 >>> Variable('_(article.section)').resolve(c)
102 u'News'
103 >>> Variable('_("Good News")').resolve(c)
104 u'Good News'
105 >>> Variable("_('Better News')").resolve(c)
106 u'Better News'
108 Escaped quotes work correctly as well.
110 >>> Variable(ur'"Some \"Good\" News"').resolve(c)
111 u'Some "Good" News'
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'