[Checkins] SVN: Sandbox/J1m/resumelb/src/zc/resumelb/lb. Added a more powerful classifier.
Jim Fulton
jim at zope.com
Mon Mar 5 19:58:09 UTC 2012
Log message for revision 124523:
Added a more powerful classifier.
Changed:
U Sandbox/J1m/resumelb/src/zc/resumelb/lb.py
U Sandbox/J1m/resumelb/src/zc/resumelb/lb.test
-=-
Modified: Sandbox/J1m/resumelb/src/zc/resumelb/lb.py
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/lb.py 2012-03-05 19:48:04 UTC (rev 124522)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/lb.py 2012-03-05 19:58:08 UTC (rev 124523)
@@ -5,6 +5,7 @@
import gevent.socket
import llist
import logging
+import re
import sys
import webob
import zc.resumelb.util
@@ -336,6 +337,19 @@
return host[4:]
return host
+def re_classifier(name, regex):
+ search = re.compile(regex).search
+
+ def classifier(env):
+ value = env.get(name)
+ if value is not None:
+ match = search(value)
+ if match:
+ return match.group('class')
+ return ''
+
+ return classifier
+
def main(args=None):
if args is None:
args = sys.argv[1:]
Modified: Sandbox/J1m/resumelb/src/zc/resumelb/lb.test
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/lb.test 2012-03-05 19:48:04 UTC (rev 124522)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/lb.test 2012-03-05 19:58:08 UTC (rev 124523)
@@ -437,3 +437,20 @@
>>> zc.resumelb.lb.host_classifier(dict(HTTP_HOST='www.example.com'))
'example.com'
+
+A more general classifier is the re_classifier. It is a classifier
+factory that takes a environment name and a regular expression. The
+regular expression must define a group named 'class':
+
+ >>> classifier = zc.resumelb.lb.re_classifier(
+ ... 'PATH_INFO', r'^/(?P<class>[^/]*)')
+ >>> classifier(dict(PATH_INFO=''))
+ ''
+ >>> classifier({})
+ ''
+ >>> classifier(dict(PATH_INFO='/'))
+ ''
+ >>> classifier(dict(PATH_INFO='/foo'))
+ 'foo'
+ >>> classifier(dict(PATH_INFO='/foo/bar/baz'))
+ 'foo'
More information about the checkins
mailing list