| # -*- Python -*- vim: set syntax=python tabstop=4 expandtab cc=80: |
| #===----------------------------------------------------------------------===## |
| # |
| # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| # |
| #===----------------------------------------------------------------------===## |
| """ |
| 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 |