Mercurial > genshi > genshi-test
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)