[Checkins] SVN: Sandbox/malthe/chameleon.zpt/ Allow empty expressions.

Malthe Borch mborch at gmail.com
Mon Nov 17 07:37:18 EST 2008


Log message for revision 93041:
  Allow empty expressions.

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

-=-
Modified: Sandbox/malthe/chameleon.zpt/CHANGES.txt
===================================================================
--- Sandbox/malthe/chameleon.zpt/CHANGES.txt	2008-11-17 12:03:43 UTC (rev 93040)
+++ Sandbox/malthe/chameleon.zpt/CHANGES.txt	2008-11-17 12:37:18 UTC (rev 93041)
@@ -4,6 +4,9 @@
 Head
 ~~~~
 
+- Allow empty expressions; for string-expressions, this means an empty
+  string, rather than no expression. [malthe]
+
 - Fixed string escape issue. [malthe]
 
 - Fixed issue where translation pragma would be reset if a

Modified: Sandbox/malthe/chameleon.zpt/src/chameleon/zpt/expressions.py
===================================================================
--- Sandbox/malthe/chameleon.zpt/src/chameleon/zpt/expressions.py	2008-11-17 12:03:43 UTC (rev 93040)
+++ Sandbox/malthe/chameleon.zpt/src/chameleon/zpt/expressions.py	2008-11-17 12:37:18 UTC (rev 93041)
@@ -273,7 +273,7 @@
         
         >>> class MockExpressionTranslator(ExpressionTranslator):
         ...     def translate(self, string, escape=None):
-        ...         return types.value(string)
+        ...         if string: return types.value(string)
 
         >>> output = MockExpressionTranslator().output
 
@@ -304,7 +304,7 @@
         
         >>> class MockExpressionTranslator(ExpressionTranslator):
         ...     def translate(self, string, escape=None):
-        ...         return types.value(string)
+        ...         if string: return types.value(string)
 
         >>> tales = MockExpressionTranslator().tales
                 
@@ -356,6 +356,10 @@
             
             i = j + 1
 
+        value = translator.translate("", escape)
+        if value is not None:
+            parts.append(value)
+
         if len(parts) == 1:
             return parts[0]
 
@@ -374,12 +378,13 @@
         if isinstance(string, unicode):
             string = string.encode('utf-8')
             
-        parser.expr(string.strip())
+        if string:
+            parser.expr(string.strip())
         
-        if isinstance(string, str):
-            string = string.decode('utf-8')
+            if isinstance(string, str):
+                string = string.decode('utf-8')
 
-        return types.value(string.strip())
+            return types.value(string.strip())
 
 python_translator = PythonTranslator()
 
@@ -395,6 +400,14 @@
         self.translator = translator
 
     def translate(self, string, escape=None):
+        """
+        >>> translate = StringTranslator(python_translator).translate
+
+        >>> translate("")
+        join('',)
+        
+        """
+        
         parts = self.split(string)
         if escape is not None:
             parts = map(



More information about the Checkins mailing list