diff options
Diffstat (limited to 'tools/build/src/util/regex.py')
-rw-r--r-- | tools/build/src/util/regex.py | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/tools/build/src/util/regex.py b/tools/build/src/util/regex.py index 29e26ecf4..6348c6fb1 100644 --- a/tools/build/src/util/regex.py +++ b/tools/build/src/util/regex.py @@ -5,9 +5,12 @@ import re +from b2.util import bjam_signature + + def transform (list, pattern, indices = [1]): - """ Matches all elements of 'list' agains the 'pattern' - and returns a list of the elements indicated by indices of + """ Matches all elements of 'list' agains the 'pattern' + and returns a list of the elements indicated by indices of all successfull matches. If 'indices' is omitted returns a list of first paranthethised groups of all successfull matches. @@ -23,3 +26,29 @@ def transform (list, pattern, indices = [1]): return result + +@bjam_signature([['s', 'pattern', 'replacement']]) +def replace(s, pattern, replacement): + """Replaces occurrences of a match string in a given + string and returns the new string. The match string + can be a regex expression. + + Args: + s (str): the string to modify + pattern (str): the search expression + replacement (str): the string to replace each match with + """ + return re.sub(pattern, replacement, s) + + +@bjam_signature((['items', '*'], ['match'], ['replacement'])) +def replace_list(items, match, replacement): + """Replaces occurrences of a match string in a given list of strings and returns + a list of new strings. The match string can be a regex expression. + + Args: + items (list): the list of strings to modify. + match (str): the search expression. + replacement (str): the string to replace with. + """ + return [replace(item, match, replacement) for item in items] |