From f64efb829328a1ec2514365571f1e1d414cfe572 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Fri, 18 Apr 2008 10:32:14 +0200 Subject: [PATCH] removed loop.parent. If this variable is wanted you can get it by doing something like `{% parent_looo = loop %}` before the iteration --HG-- branch : trunk --- jinja2/compiler.py | 2 -- jinja2/optimizer.py | 3 +-- jinja2/runtime.py | 16 +++++----------- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/jinja2/compiler.py b/jinja2/compiler.py index 4b093ff..b7aae46 100644 --- a/jinja2/compiler.py +++ b/jinja2/compiler.py @@ -656,8 +656,6 @@ class CodeGenerator(NodeVisitor): else: self.visit(node.iter, loop_frame) - if 'loop' in aliases: - self.write(', ' + aliases['loop']) self.write(extended_loop and '):' or ':') # tests in not extended loops become a continue diff --git a/jinja2/optimizer.py b/jinja2/optimizer.py index fd5922c..6b13aec 100644 --- a/jinja2/optimizer.py +++ b/jinja2/optimizer.py @@ -145,7 +145,6 @@ class Optimizer(NodeTransformer): except (nodes.Impossible, TypeError): return fallback - parent = context.get('loop') context.push() result = [] iterated = False @@ -181,7 +180,7 @@ class Optimizer(NodeTransformer): try: try: - for item, loop in LoopContext(iterable, parent, True): + for item, loop in LoopContext(iterable, True): context['loop'] = loop.make_static() assign(node.target, item) result.extend(self.visit(n.copy(), context) diff --git a/jinja2/runtime.py b/jinja2/runtime.py index 8e407c9..1f1d7bd 100644 --- a/jinja2/runtime.py +++ b/jinja2/runtime.py @@ -152,21 +152,17 @@ class LoopContextBase(object): class LoopContext(LoopContextBase): """A loop context for dynamic iteration.""" - def __init__(self, iterable, parent=None, enforce_length=False): + def __init__(self, iterable, enforce_length=False): self._iterable = iterable self._next = iter(iterable).next self._length = None self.index0 = -1 - self.parent = parent if enforce_length: len(self) def make_static(self): """Return a static loop context for the optimizer.""" - parent = None - if self.parent is not None: - parent = self.parent.make_static() - return StaticLoopContext(self.index0, self.length, parent) + return StaticLoopContext(self.index0, self.length) def __iter__(self): return self @@ -197,17 +193,15 @@ class StaticLoopContext(LoopContextBase): loop object is accessed in a non static way (eg: becomes part of a function call).""" - def __init__(self, index0, length, parent): + def __init__(self, index0, length): self.index0 = index0 - self.parent = parent self.length = length def __repr__(self): """The repr is used by the optimizer to dump the object.""" - return 'StaticLoopContext(%r, %r, %r)' % ( + return 'StaticLoopContext(%r, %r)' % ( self.index0, - self.length, - self.parent + self.length ) def make_static(self): -- 2.26.2