[Checkins] SVN: Sandbox/malthe/chameleon.zpt/ Added interpolation meta attribute.

Stefan Eletzhofer stefan.eletzhofer at inquant.de
Mon Dec 1 10:50:52 EST 2008


Log message for revision 93489:
  Added interpolation meta attribute.

Changed:
  U   Sandbox/malthe/chameleon.zpt/CHANGES.txt
  U   Sandbox/malthe/chameleon.zpt/src/chameleon/zpt/language.py

-=-
Modified: Sandbox/malthe/chameleon.zpt/CHANGES.txt
===================================================================
--- Sandbox/malthe/chameleon.zpt/CHANGES.txt	2008-12-01 15:30:52 UTC (rev 93488)
+++ Sandbox/malthe/chameleon.zpt/CHANGES.txt	2008-12-01 15:50:51 UTC (rev 93489)
@@ -4,6 +4,9 @@
 Head
 ~~~~
 
+- Added a ``interpolation`` meta attribute to control $-interpolation of
+  expressions.  This defaults to ``true`` for chameleon.zpt. [seletz]
+
 1.0b5 (released 11/29/2008)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Modified: Sandbox/malthe/chameleon.zpt/src/chameleon/zpt/language.py
===================================================================
--- Sandbox/malthe/chameleon.zpt/src/chameleon/zpt/language.py	2008-12-01 15:30:52 UTC (rev 93488)
+++ Sandbox/malthe/chameleon.zpt/src/chameleon/zpt/language.py	2008-12-01 15:50:51 UTC (rev 93489)
@@ -10,6 +10,7 @@
 
 import interfaces
 
+
 class ZopePageTemplateElement(translation.Element):
     """Zope Page Template element.
 
@@ -26,6 +27,10 @@
             "http://xml.zope.org/namespaces/i18n")
 
         @property
+        def _interpolation_enabled(self):
+            return self.element.meta_interpolation in config.TRUEVALS + ('',)
+
+        @property
         def omit(self):
             if self.element.tal_omit is not None:
                 return self.element.tal_omit or True
@@ -95,13 +100,14 @@
                 xhtml_attributes.update(utils.get_attributes_from_namespace(
                     self.element, None))
             
-            for name, value in xhtml_attributes.items():
-                parts = self.element.translator.split(value)
-                for part in parts:
-                    if isinstance(part, types.expression):
-                        attributes.append(
-                            (types.declaration((name,)), types.join(parts)))
-                        break
+            if self._interpolation_enabled:
+                for name, value in xhtml_attributes.items():
+                    parts = self.element.translator.split(value)
+                    for part in parts:
+                        if isinstance(part, types.expression):
+                            attributes.append(
+                                (types.declaration((name,)), types.join(parts)))
+                            break
                     
             if self.element.tal_attributes is not None:
                 attributes.extend(self.element.tal_attributes)
@@ -146,12 +152,16 @@
 
         @property
         def text(self):
+            if not self._interpolation_enabled:
+                return (self.element.text,)
             if self.element.text is not None:
                 return self.element.translator.split(self.element.text)
             return ()
 
         @property
         def tail(self):
+            if not self._interpolation_enabled:
+                return (self.element.tail,)
             if self.element.tail is not None:
                 return self.element.translator.split(self.element.tail)
             return ()
@@ -187,6 +197,8 @@
 
     meta_translator = etree.Annotation(
         utils.meta_attr('translator'))
+    meta_interpolation = utils.attribute(
+        utils.meta_attr('interpolation'), default='true')
 
 class XHTMLElement(ZopePageTemplateElement):
     """XHTML namespace element."""
@@ -244,7 +256,7 @@
         ("content", utils.tal_attr("content")), lambda p: p.output)
     tal_omit = utils.attribute(
         ("omit-tag", utils.tal_attr("omit-tag")), lambda p: p.tales, u"")    
-    
+
 class METALElement(XHTMLElement):
     """METAL namespace element."""
 



More information about the Checkins mailing list