def regexp_tagging_algorithm(message, tags): re_starts_of = lambda pattern: ur'.*\s%s|^%s' % (pattern, pattern) tag_patterns = lambda (k, v): map( lambda value: re_starts_of(value), [k] + v ) is_match = lambda pattern: re.match(pattern, message, re.I|re.U) is_tag_matched = lambda tag: lists.any(is_match, tag_patterns(tag)) matched_tags = filter(is_tag_matched, tags.items()) tag_names = list(set(map(lambda x: x[0], matched_tags))) return tag_names
def test_any(self): self.assertFalse(lists.any(lambda x: x < 0, [1, 2, 3])) self.assertFalse(lists.any(lambda x: x is not None, [None, None, None])) self.assertTrue(lists.any(lambda x: x > 1, [0, 1, 2]))