match.py
59 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
/ mercurial / match.py
Martin Geisler
|
r8231 | # match.py - file name matching | ||
# | ||||
# Copyright 2008, 2009 Matt Mackall <mpm@selenic.com> and others | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2, incorporated herein by reference. | ||||
Matt Mackall
|
r6576 | import util | ||
Matt Mackall
|
r6604 | class _match(object): | ||
def __init__(self, root, cwd, files, mf, ap): | ||||
Matt Mackall
|
r6576 | self._root = root | ||
self._cwd = cwd | ||||
Matt Mackall
|
r6604 | self._files = files | ||
Martin Geisler
|
r8152 | self._fmap = set(files) | ||
Matt Mackall
|
r6834 | self.matchfn = mf | ||
Matt Mackall
|
r6576 | self._anypats = ap | ||
def __call__(self, fn): | ||||
Matt Mackall
|
r6834 | return self.matchfn(fn) | ||
Matt Mackall
|
r6576 | def __iter__(self): | ||
for f in self._files: | ||||
yield f | ||||
def bad(self, f, msg): | ||||
return True | ||||
def dir(self, f): | ||||
pass | ||||
def missing(self, f): | ||||
pass | ||||
def exact(self, f): | ||||
return f in self._fmap | ||||
def rel(self, f): | ||||
return util.pathto(self._root, self._cwd, f) | ||||
def files(self): | ||||
return self._files | ||||
def anypats(self): | ||||
return self._anypats | ||||
Matt Mackall
|
r6596 | |||
Matt Mackall
|
r6604 | class always(_match): | ||
def __init__(self, root, cwd): | ||||
_match.__init__(self, root, cwd, [], lambda f: True, False) | ||||
class never(_match): | ||||
def __init__(self, root, cwd): | ||||
_match.__init__(self, root, cwd, [], lambda f: False, False) | ||||
Matt Mackall
|
r6596 | |||
Matt Mackall
|
r6604 | class exact(_match): | ||
def __init__(self, root, cwd, files): | ||||
Simon Heimberg
|
r8522 | _match.__init__(self, root, cwd, files, self.exact, False) | ||
Matt Mackall
|
r6596 | |||
Matt Mackall
|
r6604 | class match(_match): | ||
Matt Mackall
|
r8567 | def __init__(self, root, cwd, patterns, include=[], exclude=[], | ||
default='glob'): | ||||
Matt Mackall
|
r6604 | f, mf, ap = util.matcher(root, cwd, patterns, include, exclude, | ||
Matt Mackall
|
r8566 | default) | ||
Matt Mackall
|
r6604 | _match.__init__(self, root, cwd, f, mf, ap) | ||
Matt Mackall
|
r8568 | |||
def patkind(pat): | ||||
return util._patsplit(pat, None)[0] | ||||