[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