changeset 21914:10e99839a7a4

util.re: add an escape method The escape method in at least one of the modules called 're2' is in C. This means it is significantly faster than the Python code written in 're'. An upcoming patch will have benchmarks.
author Siddharth Agarwal <sid0@fb.com>
date Tue, 15 Jul 2014 15:14:45 -0700
parents 50aad4609224
children d516b6de3821
files mercurial/util.py
diffstat 1 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/util.py	Tue Jul 15 15:01:52 2014 -0700
+++ b/mercurial/util.py	Tue Jul 15 15:14:45 2014 -0700
@@ -744,6 +744,21 @@
                 pass
         return remod.compile(pat, flags)
 
+    @propertycache
+    def escape(self):
+        '''Return the version of escape corresponding to self.compile.
+
+        This is imperfect because whether re2 or re is used for a particular
+        function depends on the flags, etc, but it's the best we can do.
+        '''
+        global _re2
+        if _re2 is None:
+            self._checkre2()
+        if _re2:
+            return re2.escape
+        else:
+            return remod.escape
+
 re = _re()
 
 _fspathcache = {}