def _toStardardCondition(condition):
'''?????????????????'''
# class condition
if inspect.isclass(condition):
info = "must be %s type" % condition.__name__
return lambda x: isinstance(x, condition) or info
if isinstance(condition, (tuple, list)):
cls, condition = condition[:2]
if condition is None:
return _toStardardCondition(cls)
# regular condition
if cls in (str, unicode) and condition[0] == condition[-1] == '/':
info = 'must match regular expression: %s' % condition
return lambda x: (isinstance(x, cls) and re.match(condition[1:-1], x) is not None) or info
# pure str condition
info = 'must satisfy rule: %s' % condition
return lambda x: (isinstance(x, cls) and eval(condition)) or info
# fcuntion condition
return condition
评论列表
文章目录