[Checkins] SVN: Sandbox/malthe/chameleon.core/ Make sure passed arguments are passed in to nested scopes (closures); this prevents an error being raised if the variable is used before a redefine in that scope.
Malthe Borch
mborch at gmail.com
Sun Nov 16 07:32:30 EST 2008
Log message for revision 93008:
Make sure passed arguments are passed in to nested scopes (closures); this prevents an error being raised if the variable is used before a redefine in that scope.
Changed:
U Sandbox/malthe/chameleon.core/CHANGES.txt
U Sandbox/malthe/chameleon.core/src/chameleon/core/translation.py
-=-
Modified: Sandbox/malthe/chameleon.core/CHANGES.txt
===================================================================
--- Sandbox/malthe/chameleon.core/CHANGES.txt 2008-11-16 12:31:20 UTC (rev 93007)
+++ Sandbox/malthe/chameleon.core/CHANGES.txt 2008-11-16 12:32:30 UTC (rev 93008)
@@ -4,6 +4,9 @@
HEAD
~~~~
+- Make sure that arguments passed into the `render`-method are
+ introduced in every nested scope. [malthe]
+
- Added translation language to main scope and make sure redefining it
inside a closure does not cause issues with nested scope
locals. [malthe]
Modified: Sandbox/malthe/chameleon.core/src/chameleon/core/translation.py
===================================================================
--- Sandbox/malthe/chameleon.core/src/chameleon/core/translation.py 2008-11-16 12:31:20 UTC (rev 93007)
+++ Sandbox/malthe/chameleon.core/src/chameleon/core/translation.py 2008-11-16 12:32:30 UTC (rev 93008)
@@ -329,12 +329,16 @@
callback = self.symbols.slot+element.node.fill_slot
remote_scope = self.symbols.scope+"_remote"
kwargs.append((callback, callback))
-
+
+ scope_args = tuple(
+ "%s=%s" % (variable, variable) for variable in \
+ itertools.chain(*self.stream.scope))
+
subclauses = []
subclauses.append(
clauses.Method(
callback, (
- remote_scope, "%s=%s" % (self.symbols.domain, self.symbols.domain)),
+ remote_scope,) + scope_args,
types.value('%s.getvalue()' % self.symbols.out)))
subclauses.append(
clauses.UpdateScope(self.symbols.scope, remote_scope))
@@ -342,9 +346,6 @@
types.template('%(init)s.initialize_stream()'),
(self.symbols.out, self.symbols.write)))
subclauses.append(clauses.Visit(element.node))
-
- #subclauses.append(clauses.Assign(
- # types.template('%(out)s.getvalue()'), variable))
_.append(clauses.Group(subclauses))
_.append(clauses.Assign(self.use_macro, self.symbols.metal))
More information about the Checkins
mailing list