Exemplo n.º 1
0
    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"])
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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"])