Source code for pook.compare

import re
from .assertion import test

# Negate is used a reserved token identifier to negate matching
NEGATE = "!!"


[docs] def compile(expr): try: return re.compile(expr, re.IGNORECASE) except Exception: pass
[docs] def match(expr, value): regex = compile(expr) if not regex: return False return regex.match(value) is not None
[docs] def strip_negate(value): return value[len(NEGATE) :].lstrip()
[docs] def compare(expr, value, regex_expr=False): """ Compares an string or regular expression againast a given value. Arguments: expr (str|regex): string or regular expression value to compare. value (str): value to compare against to. regex_expr (bool, optional): enables string based regex matching. Raises: AssertionError: in case of assertion error. Returns: bool """ # Strict equality comparison if expr == value: return True # Infer negate expression to match, if needed negate = False if isinstance(expr, str): negate = expr.startswith(NEGATE) expr = strip_negate(expr) if negate else expr try: # RegExp or strict equality comparison test(expr, value, regex_expr=regex_expr) except Exception as err: if negate: return True else: raise err return True