Mercurial > hg
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):