Mercurial > hgsubversion
comparison hgsubversion/maps.py @ 1395:53184be1b1fd
maps: add _findkey method
This private method will help us find a key that matches a regex. Priority is
given to old-style strings.
| author | Sean Farley <sean.michael.farley@gmail.com> |
|---|---|
| date | Mon, 24 Mar 2014 11:21:00 -0500 |
| parents | c4055968f030 |
| children | 77594c88d91f |
comparison
equal
deleted
inserted
replaced
| 1394:c4055968f030 | 1395:53184be1b1fd |
|---|---|
| 28 | 28 |
| 29 # append mappings specified from the commandline | 29 # append mappings specified from the commandline |
| 30 clmap = util.configpath(self.meta.ui, self.mapname) | 30 clmap = util.configpath(self.meta.ui, self.mapname) |
| 31 if clmap: | 31 if clmap: |
| 32 self.load(clmap) | 32 self.load(clmap) |
| 33 | |
| 34 def _findkey(self, key): | |
| 35 '''Takes a string and finds the first corresponding key that matches | |
| 36 via regex''' | |
| 37 if not key: | |
| 38 return None | |
| 39 | |
| 40 # compile a new regex key if we're given a string; can't use | |
| 41 # hgutil.compilere since we need regex.sub | |
| 42 k = key | |
| 43 if isinstance(key, str): | |
| 44 k = re.compile(re.escape(key)) | |
| 45 | |
| 46 # preference goes to matching the exact pattern, i.e. 'foo' should | |
| 47 # first match 'foo' before trying regexes | |
| 48 for regex in self: | |
| 49 if regex.pattern == k.pattern: | |
| 50 return regex | |
| 51 | |
| 52 # if key isn't a string, then we are done; nothing matches | |
| 53 if not isinstance(key, str): | |
| 54 return None | |
| 55 | |
| 56 # now we test the regex; the above loop will be faster and is | |
| 57 # equivalent to not having regexes (i.e. just doing string compares) | |
| 58 for regex in self: | |
| 59 if regex.search(key): | |
| 60 return regex | |
| 61 return None | |
| 33 | 62 |
| 34 def load(self, path): | 63 def load(self, path): |
| 35 '''Load mappings from a file at the specified path.''' | 64 '''Load mappings from a file at the specified path.''' |
| 36 path = os.path.expandvars(path) | 65 path = os.path.expandvars(path) |
| 37 if not os.path.exists(path): | 66 if not os.path.exists(path): |
