summary refs log tree commit diff
path: root/synapse/util/__init__.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2018-10-26 16:22:45 +0100
committerErik Johnston <erik@matrix.org>2018-10-26 16:22:45 +0100
commit03e634dad4cd1014f609ece9574df7a24f1ec254 (patch)
treea9f4a53a03bb0205e616ce7cf741fdbd15d4fcf5 /synapse/util/__init__.py
parentpep8 (diff)
parentPort register_new_matrix_user to Python 3 and add tests (#4085) (diff)
downloadsynapse-03e634dad4cd1014f609ece9574df7a24f1ec254.tar.xz
Merge branch 'develop' of github.com:matrix-org/synapse into erikj/purge_state_groups
Diffstat (limited to 'synapse/util/__init__.py')
-rw-r--r--synapse/util/__init__.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/synapse/util/__init__.py b/synapse/util/__init__.py
index 9a8fae0497..0ae7e2ef3b 100644
--- a/synapse/util/__init__.py
+++ b/synapse/util/__init__.py
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 import logging
+import re
 from itertools import islice
 
 import attr
@@ -138,3 +139,27 @@ def log_failure(failure, msg, consumeErrors=True):
 
     if not consumeErrors:
         return failure
+
+
+def glob_to_regex(glob):
+    """Converts a glob to a compiled regex object.
+
+    The regex is anchored at the beginning and end of the string.
+
+    Args:
+        glob (str)
+
+    Returns:
+        re.RegexObject
+    """
+    res = ''
+    for c in glob:
+        if c == '*':
+            res = res + '.*'
+        elif c == '?':
+            res = res + '.'
+        else:
+            res = res + re.escape(c)
+
+    # \A anchors at start of string, \Z at end of string
+    return re.compile(r"\A" + res + r"\Z", re.IGNORECASE)