[Checkins] SVN: z3c.pt/trunk/ Allow '+' character in path-expressions.

Malthe Borch mborch at gmail.com
Tue Oct 14 10:36:42 EDT 2008


Log message for revision 92195:
  Allow '+' character in path-expressions.

Changed:
  U   z3c.pt/trunk/CHANGES.txt
  U   z3c.pt/trunk/src/z3c/pt/expressions.py

-=-
Modified: z3c.pt/trunk/CHANGES.txt
===================================================================
--- z3c.pt/trunk/CHANGES.txt	2008-10-14 14:36:03 UTC (rev 92194)
+++ z3c.pt/trunk/CHANGES.txt	2008-10-14 14:36:41 UTC (rev 92195)
@@ -4,6 +4,10 @@
 Head
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+  Bug fixes
+
+- Allow '+' character in path-expressions.
+
 Version 1.0b1 - October 2, 2008
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Modified: z3c.pt/trunk/src/z3c/pt/expressions.py
===================================================================
--- z3c.pt/trunk/src/z3c/pt/expressions.py	2008-10-14 14:36:03 UTC (rev 92194)
+++ z3c.pt/trunk/src/z3c/pt/expressions.py	2008-10-14 14:36:41 UTC (rev 92195)
@@ -52,31 +52,39 @@
 class PathTranslator(expressions.ExpressionTranslator):
     path_regex = re.compile(
         r'^((nocall|not):\s*)*([A-Za-z_][A-Za-z0-9_]*)'+
-        r'(/[A-Za-z_ at -][A-Za-z0-9_ at -\\.]*)*$')
+        r'(/[A-Za-z_@\-+][A-Za-z0-9_@\-\.+/]*)*$')
 
     path_traverse = ZopeTraverser()
 
     symbol = '_path'
     
     def validate(self, string):
+        """
+        >>> validate = PathTranslator().validate
+        >>> validate("image_path/++resource++/@@hello.html")
+        """
+
         if not self.path_regex.match(string.strip()):
             raise SyntaxError("Not a valid path-expression.")
 
     def translate(self, string):
         """
-            >>> translate = PathTranslator().translate
-            >>> translate("a/b")
-            value("_path(a, request, True, 'b')")
+        >>> translate = PathTranslator().translate
 
-            >>> translate("context/@@view")
-            value("_path(context, request, True, '@@view')")
+        >>> translate("a/b")
+        value("_path(a, request, True, 'b')")
 
-            >>> translate("nocall: context/@@view")
-            value("_path(context, request, False, '@@view')")
+        Verify allowed character set.
 
-            >>> translate("not: context/@@view")
-            value("not(_path(context, request, True, '@@view'))")
+        >>> translate("context/@@view")
+        value("_path(context, request, True, '@@view')")
 
+        >>> translate("nocall: context/@@view")
+        value("_path(context, request, False, '@@view')")
+
+        >>> translate("not: context/@@view")
+        value("not(_path(context, request, True, '@@view'))")
+
         """
 
         nocall = False



More information about the Checkins mailing list