implement 'contains()' (#2446)

and add it to globals() in compiled expressions for --filter etc
This commit is contained in:
Mike Fährmann
2022-03-30 10:36:52 +02:00
parent ecee315bbf
commit 413b77757b
2 changed files with 36 additions and 0 deletions

View File

@@ -71,6 +71,24 @@ def unique_sequence(iterable):
yield element
def contains(values, elements):
"""Returns True if at least one of 'elements' is contained in 'values'"""
if not isinstance(elements, (tuple, list)):
elements = (elements,)
if isinstance(values, str):
fmt = r"\b{}\b".format
for e in elements:
if re.search(fmt(e), values):
return True
else:
for e in elements:
if e in values:
return True
return False
def raises(cls):
"""Returns a function that raises 'cls' as exception"""
def wrap(*args):
@@ -429,6 +447,7 @@ WINDOWS = (os.name == "nt")
SENTINEL = object()
SPECIAL_EXTRACTORS = {"oauth", "recursive", "test"}
GLOBALS = {
"contains" : contains,
"parse_int": text.parse_int,
"urlsplit" : urllib.parse.urlsplit,
"datetime" : datetime.datetime,