[Checkins] SVN: Sandbox/malthe/chameleon.core/ Added support for translating dynamic body text.
Malthe Borch
mborch at gmail.com
Fri Oct 3 21:46:56 EDT 2008
Log message for revision 91722:
Added support for translating dynamic body text.
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-10-04 01:23:45 UTC (rev 91721)
+++ Sandbox/malthe/chameleon.core/CHANGES.txt 2008-10-04 01:46:56 UTC (rev 91722)
@@ -4,6 +4,9 @@
head
~~~~
+- Added support for translating dynamic body text (used in
+ interpolation expressions). [malthe]
+
- Added support for macros prebound to keyword arguments. [malthe]
1.0b1 (released 2/10/2008)
Modified: Sandbox/malthe/chameleon.core/src/chameleon/core/translation.py
===================================================================
--- Sandbox/malthe/chameleon.core/src/chameleon/core/translation.py 2008-10-04 01:23:45 UTC (rev 91721)
+++ Sandbox/malthe/chameleon.core/src/chameleon/core/translation.py 2008-10-04 01:46:56 UTC (rev 91722)
@@ -246,6 +246,35 @@
_.append(clauses.Write(content))
+ # dynamic text
+ elif self.translate is not None and \
+ True in map(lambda part: isinstance(part, types.expression), text):
+ if len(self.element):
+ raise ValueError(
+ "Can't translate dynamic text block with elements in it.")
+
+ subclauses = []
+ subclauses.append(clauses.Define(
+ types.declaration((self.symbols.out, self.symbols.write)),
+ types.template('%(init)s.initialize_stream()')))
+
+ for part in text:
+ if isinstance(part, types.expression):
+ subclauses.append(clauses.Write(part))
+ else:
+ part = part.strip().replace(' ', ' ').replace('\n', '')
+ if part != "":
+ subclauses.append(clauses.Out(part))
+
+ # attempt translation
+ subclauses.append(clauses.Assign(
+ self.translate_expression(
+ types.value('%(out)s.getvalue()'),
+ default=None), self.symbols.tmp))
+
+ _.append(clauses.Group(subclauses))
+ _.append(clauses.Write(types.value(self.symbols.tmp)))
+
# include
elif self.include:
# compute macro function arguments and create argument string
More information about the Checkins
mailing list