summaryrefslogtreecommitdiff
path: root/tools/build/src/util/regex.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/src/util/regex.py')
-rw-r--r--tools/build/src/util/regex.py33
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]