added support for dotted names in tests and filters
--HG--
branch : trunk
diff --git a/jinja2/parser.py b/jinja2/parser.py
index dae1a6b..8d23b5f 100644
--- a/jinja2/parser.py
+++ b/jinja2/parser.py
@@ -676,18 +676,21 @@
lineno=token.lineno)
def parse_filter(self, node, start_inline=False):
- lineno = self.stream.current.type
while self.stream.current.type == 'pipe' or start_inline:
if not start_inline:
self.stream.next()
token = self.stream.expect('name')
+ name = token.value
+ while self.stream.current.type is 'dot':
+ self.stream.next()
+ name += '.' + self.stream.expect('name').value
if self.stream.current.type is 'lparen':
args, kwargs, dyn_args, dyn_kwargs = self.parse_call(None)
else:
args = []
kwargs = []
dyn_args = dyn_kwargs = None
- node = nodes.Filter(node, token.value, args, kwargs, dyn_args,
+ node = nodes.Filter(node, name, args, kwargs, dyn_args,
dyn_kwargs, lineno=token.lineno)
start_inline = False
return node
@@ -700,6 +703,9 @@
else:
negated = False
name = self.stream.expect('name').value
+ while self.stream.current.type is 'dot':
+ self.stream.next()
+ name += '.' + self.stream.expect('name').value
dyn_args = dyn_kwargs = None
kwargs = []
if self.stream.current.type is 'lparen':