Example #1
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"])
Example #2
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"])
Example #3
0
    def test_case_sensitivity(self):
        def uni_match(input):
            def func(uni_match):
                return uni_match

            return func(*input)

        def final(input):
            return input

        config.regex_flags = regex.VERBOSE

        lower_regex = "([a-z]+)"
        lower_exp = Expression(lower_regex, [uni_match], [1], final)
        self.assertEquals(lower_exp.findall("aAbcBC"), ["a", "bc"])

        upper_regex = "([A-Z]+)"
        upper_exp = Expression(upper_regex, [uni_match], [1], final)
        self.assertEquals(upper_exp.findall("aAbcBC"), ["A", "BC"])
Example #4
0
    def test_unicode_flag(self):
        def uni_match(input):
            def func(uni_match):
                return uni_match

            return func(*input)

        def final(input):
            return input

        config.regex_flags = config.regex_flags | regex.UNICODE

        imp_regex = "(\w+)"
        implicit_u = Expression(imp_regex, [uni_match], [1], final)
        self.assertEquals(implicit_u.findall("b\xebs"), ["b\xebs"])

        exp_regex = "([\u00c0-\ud7ff]+)"
        explicit_u = Expression(exp_regex, [uni_match], [1], final)
        self.assertEquals(explicit_u.findall("b\u00eb\u2013s"), ["\u00eb\u2013"])
Example #5
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"])
Example #6
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)