changeset 821:abb1f1d2f4f3 experimental-inline

inline-branch: Fix for `for` directive.
author cmlenz
date Wed, 11 Mar 2009 18:13:12 +0000
parents 1837f39efd6f
children 8ebccfa9a9fe
files genshi/template/directives.py genshi/template/inline.py
diffstat 2 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/template/directives.py
+++ b/genshi/template/directives.py
@@ -344,8 +344,8 @@
             raise TemplateSyntaxError('"in" keyword missing in "for" directive',
                                       template.filepath, lineno, offset)
         assign, value = value.split(' in ', 1)
-        self.target = _parse(assign, 'exec')
-        self.assign = _assignment(self.target.body[0].value)
+        self.target = _parse(assign, 'exec').body[0].value
+        self.assign = _assignment(self.target)
         value = 'iter(%s)' % value.strip()
         self.filename = template.filepath
         Directive.__init__(self, value, template, namespaces, lineno, offset)
--- a/genshi/template/inline.py
+++ b/genshi/template/inline.py
@@ -11,10 +11,10 @@
 # individuals. For the exact contribution history, see the revision
 # history and logs, available at http://genshi.edgewall.org/log/.
 
-import compiler
 import imp
 
 from genshi.core import Attrs, Stream, _ensure, START, END, TEXT
+from genshi.template.astutil import _ast
 from genshi.template.base import EXPR, SUB
 from genshi.template.directives import *
 
@@ -64,11 +64,11 @@
 def _assign(ast):
     buf = []
     def _build(node, indices):
-        if isinstance(node, (compiler.ast.AssTuple, compiler.ast.Tuple)):
-            for idx, child in enumerate(node.nodes):
-                _build(child, indices + (idx,))
-        elif isinstance(node, (compiler.ast.AssName, compiler.ast.Name)):
-            buf.append('%r: v%s' % (node.name, ''.join(['[%s]' % i for i in indices])))
+        if isinstance(node, _ast.Tuple):
+            for idx, elt in enumerate(node.elts):
+                _build(elt, indices + (idx,))
+        elif isinstance(node, _ast.Name):
+            buf.append('%r: v%s' % (node.id, ''.join(['[%s]' % i for i in indices])))
     _build(ast, ())
     return '{%s}' % ', '.join(buf)
 
Copyright (C) 2012-2017 Edgewall Software