def test_groups(self): def greeting(input): def func(greeting): return greeting return func(*input) def final(input): for i in input: if i is not None: return i regex = "(hi)" exp = Expression(regex, [greeting], [1], final) regex = "(ho)" exp2 = Expression(regex, [greeting], [1], final) grouped_expressions = AlternatesGroup([exp, exp2], final) self.assertEquals(grouped_expressions.findall("hi"), ["hi"])
def __init__(self, expressions_dict, function_builder): self.type_db = {} for expression_type, expressions in expressions_dict.items(): type_expressions = [] for name, expression in expressions.items(): groups = expression['Groups'] regex = expression['Expression'] lengths = [1] * len(groups) group_functions = [function_builder.get_function(g, "group") for g in groups] expression_final_function = \ function_builder.get_function(name, function_type="expression", group_names=groups) e = Expression(regex, group_functions, lengths, expression_final_function) type_expressions.append(e) type_final_function = function_builder.get_function(expression_type, function_type="type") self.type_db[expression_type] = AlternatesGroup(type_expressions, type_final_function)
def test_expressions(self): def greeting(input): def func(greeting): return greeting return func(*input) def final(input): for i in input: if i is not None: return i regex = "(hi)|(hi)" exp = Expression(regex, [greeting, greeting], [1, 1], final) self.assertIsInstance(exp, Expression) self.assertEquals(exp.findall("hi"), ["hi"])