##// END OF EJS Templates
re2: feed unicode string to re2 module when necessary...
marmoute -
r47597:3ff35382 default draft
parent child Browse files
Show More
@@ -2172,6 +2172,7 b' def fscasesensitive(path):'
2172 return True
2172 return True
2173
2173
2174
2174
2175 _re2_input = lambda x: x
2175 try:
2176 try:
2176 import re2 # pytype: disable=import-error
2177 import re2 # pytype: disable=import-error
2177
2178
@@ -2183,11 +2184,21 b' except ImportError:'
2183 class _re(object):
2184 class _re(object):
2184 def _checkre2(self):
2185 def _checkre2(self):
2185 global _re2
2186 global _re2
2187 global _re2_input
2186 try:
2188 try:
2187 # check if match works, see issue3964
2189 # check if match works, see issue3964
2188 _re2 = bool(re2.match(br'\[([^\[]+)\]', b'[ui]'))
2190 check_pattern = br'\[([^\[]+)\]'
2191 check_input = b'[ui]'
2192 _re2 = bool(re2.match(check_pattern, check_input))
2189 except ImportError:
2193 except ImportError:
2190 _re2 = False
2194 _re2 = False
2195 except TypeError:
2196 # the `pyre-2` project provides a re2 module that accept bytes
2197 # the `fb-re2` project provides a re2 module that acccept sysstr
2198 check_pattern = pycompat.sysstr(check_pattern)
2199 check_input = pycompat.sysstr(check_input)
2200 _re2 = bool(re2.match(check_pattern, check_input))
2201 _re2_input = pycompat.sysstr
2191
2202
2192 def compile(self, pat, flags=0):
2203 def compile(self, pat, flags=0):
2193 """Compile a regular expression, using re2 if possible
2204 """Compile a regular expression, using re2 if possible
@@ -2203,7 +2214,7 b' class _re(object):'
2203 if flags & remod.MULTILINE:
2214 if flags & remod.MULTILINE:
2204 pat = b'(?m)' + pat
2215 pat = b'(?m)' + pat
2205 try:
2216 try:
2206 return re2.compile(pat)
2217 return re2.compile(_re2_input(pat))
2207 except re2.error:
2218 except re2.error:
2208 pass
2219 pass
2209 return remod.compile(pat, flags)
2220 return remod.compile(pat, flags)
General Comments 0
You need to be logged in to leave comments. Login now