attempt to support unicode in IT_MATCH

This commit is contained in:
mdipierro
2013-03-10 10:45:29 -05:00
parent 8addc54015
commit 72dade793a
2 changed files with 14 additions and 4 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.4.2-stable+timestamp.2013.03.10.10.20.58
Version 2.4.2-stable+timestamp.2013.03.10.10.44.53
+13 -3
View File
@@ -171,19 +171,29 @@ class IS_MATCH(Validator):
"""
def __init__(self, expression, error_message='invalid expression',
strict=False, search=False, extract=False):
strict=False, search=False, extract=False,
unicode=False):
if strict or not search:
if not expression.startswith('^'):
expression = '^(%s)' % expression
if strict:
if not expression.endswith('$'):
expression = '(%s)$' % expression
self.regex = re.compile(expression)
if unicode:
if not isinstance(expression,unicode):
expression = expression.decode('utf8')
self.regex = re.compile(expression,re.UNICODE)
else:
self.regex = re.compile(expression)
self.error_message = error_message
self.extract = extract
self.unicode = unicode
def __call__(self, value):
match = self.regex.search(value)
if self.unicode and not isinstance(value,unicode):
match = self.regex.search(str(value).encode('utf8'))
else:
match = self.regex.search(str(value))
if match is not None:
return (self.extract and match.group() or value, None)
return (value, translate(self.error_message))