changeset 21908:cad9dadc9d26

util: move compilere to a class We do this to allow us to use descriptors for other related methods. For now, util.compilere does the same thing. Upcoming patches will remove it.
author Siddharth Agarwal <sid0@fb.com>
date Tue, 15 Jul 2014 14:40:43 -0700
parents 7e5dfa00e3c2
children 335bb8b80443
files mercurial/util.py
diffstat 1 files changed, 26 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/util.py	Tue Jul 15 14:35:19 2014 -0700
+++ b/mercurial/util.py	Tue Jul 15 14:40:43 2014 -0700
@@ -716,29 +716,33 @@
 except ImportError:
     _re2 = False
 
-def compilere(pat, flags=0):
-    '''Compile a regular expression, using re2 if possible
+class _re(object):
+    def compile(self, pat, flags=0):
+        '''Compile a regular expression, using re2 if possible
 
-    For best performance, use only re2-compatible regexp features. The
-    only flags from the re module that are re2-compatible are
-    IGNORECASE and MULTILINE.'''
-    global _re2
-    if _re2 is None:
-        try:
-            # check if match works, see issue3964
-            _re2 = bool(re2.match(r'\[([^\[]+)\]', '[ui]'))
-        except ImportError:
-            _re2 = False
-    if _re2 and (flags & ~(remod.IGNORECASE | remod.MULTILINE)) == 0:
-        if flags & remod.IGNORECASE:
-            pat = '(?i)' + pat
-        if flags & remod.MULTILINE:
-            pat = '(?m)' + pat
-        try:
-            return re2.compile(pat)
-        except re2.error:
-            pass
-    return remod.compile(pat, flags)
+        For best performance, use only re2-compatible regexp features. The
+        only flags from the re module that are re2-compatible are
+        IGNORECASE and MULTILINE.'''
+        global _re2
+        if _re2 is None:
+            try:
+                # check if match works, see issue3964
+                _re2 = bool(re2.match(r'\[([^\[]+)\]', '[ui]'))
+            except ImportError:
+                _re2 = False
+        if _re2 and (flags & ~(remod.IGNORECASE | remod.MULTILINE)) == 0:
+            if flags & remod.IGNORECASE:
+                pat = '(?i)' + pat
+            if flags & remod.MULTILINE:
+                pat = '(?m)' + pat
+            try:
+                return re2.compile(pat)
+            except re2.error:
+                pass
+        return remod.compile(pat, flags)
+
+re = _re()
+compilere = re.compile
 
 _fspathcache = {}
 def fspath(name, root):