# -*- Python -*- vim: set syntax=python tabstop=4 expandtab cc=80:
#===----------------------------------------------------------------------===##
#
#                     The LLVM Compiler Infrastructure
#
# This file is dual licensed under the MIT and the University of Illinois Open
# Source Licenses. See LICENSE.TXT for details.
#
#===----------------------------------------------------------------------===##
"""
match - A set of functions for matching symbols in a list to a list of regexs
"""

import re


def find_and_report_matching(symbol_list, regex_list):
    report = ''
    found_count = 0
    for regex_str in regex_list:
        report += 'Matching regex "%s":\n' % regex_str
        matching_list = find_matching_symbols(symbol_list, regex_str)
        if not matching_list:
            report += '    No matches found\n\n'
            continue
        # else
        found_count += len(matching_list)
        for m in matching_list:
            report += '    MATCHES: %s\n' % m['name']
        report += '\n'
    return found_count, report


def find_matching_symbols(symbol_list, regex_str):
    regex = re.compile(regex_str)
    matching_list = []
    for s in symbol_list:
        if regex.match(s['name']):
            matching_list += [s]
    return matching_list

# -*- Python -*- vim: set syntax=python tabstop=4 expandtab cc=80:
#===----------------------------------------------------------------------===##
#
#                     The LLVM Compiler Infrastructure
#
# This file is dual licensed under the MIT and the University of Illinois Open
# Source Licenses. See LICENSE.TXT for details.
#
#===----------------------------------------------------------------------===##
"""
match - A set of functions for matching symbols in a list to a list of regexs
"""

import re


def find_and_report_matching(symbol_list, regex_list):
    report = ''
    found_count = 0
    for regex_str in regex_list:
        report += 'Matching regex "%s":\n' % regex_str
        matching_list = find_matching_symbols(symbol_list, regex_str)
        if not matching_list:
            report += '    No matches found\n\n'
            continue
        # else
        found_count += len(matching_list)
        for m in matching_list:
            report += '    MATCHES: %s\n' % m['name']
        report += '\n'
    return found_count, report


def find_matching_symbols(symbol_list, regex_str):
    regex = re.compile(regex_str)
    matching_list = []
    for s in symbol_list:
        if regex.match(s['name']):
            matching_list += [s]
    return matching_list

# -*- Python -*- vim: set syntax=python tabstop=4 expandtab cc=80: #===----------------------------------------------------------------------===## # #                     The LLVM Compiler Infrastructure # # This file is dual licensed under the MIT and the University of Illinois Open # Source Licenses. See LICENSE.TXT for details. # #===----------------------------------------------------------------------===## match - A set of functions for matching symbols in a list to a list of regexs # else