# HG changeset patch # User Matt Mackall # Date 1243151774 18000 # Node ID 19d1b2aec562830d2a4ac199e6bbb9f65c122352 # Parent a4c199e12b5aaf59d36b14507a86d3c0200d57c8 match: optimize escaping in _globre - localize re.escape - fastpath escaping of non-special characters diff -r a4c199e12b5a -r 19d1b2aec562 mercurial/match.py --- a/mercurial/match.py Sun May 24 02:56:14 2009 -0500 +++ b/mercurial/match.py Sun May 24 02:56:14 2009 -0500 @@ -125,11 +125,14 @@ i, n = 0, len(pat) res = '' group = 0 + escape = re.escape def peek(): return i < n and pat[i] while i < n: c = pat[i] i = i+1 - if c == '*': + if c not in '*?[{},\\': + res += escape(c) + elif c == '*': if peek() == '*': i += 1 res += '.*' @@ -165,11 +168,11 @@ p = peek() if p: i += 1 - res += re.escape(p) + res += escape(p) else: - res += re.escape(c) + res += escape(c) else: - res += re.escape(c) + res += escape(c) return res def _regex(kind, name, tail):