match: override visitdir() the usual way in subdirmatcher

Just override the function instead of replacing it on each instance.
This commit is contained in:
Martin von Zweigbergk 2017-05-18 10:17:57 -07:00
parent 767cd2bb63
commit ddbf56e07e

View File

@ -397,11 +397,6 @@ class subdirmatcher(match):
# from the inputs. Instead, we override matchfn() and visitdir() to # from the inputs. Instead, we override matchfn() and visitdir() to
# call the original matcher with the subdirectory path prepended. # call the original matcher with the subdirectory path prepended.
self.matchfn = lambda fn: matcher.matchfn(self._path + "/" + fn) self.matchfn = lambda fn: matcher.matchfn(self._path + "/" + fn)
def visitdir(dir):
if dir == '.':
return matcher.visitdir(self._path)
return matcher.visitdir(self._path + "/" + dir)
self.visitdir = visitdir
def abs(self, f): def abs(self, f):
return self._matcher.abs(self._path + "/" + f) return self._matcher.abs(self._path + "/" + f)
@ -412,6 +407,13 @@ class subdirmatcher(match):
def rel(self, f): def rel(self, f):
return self._matcher.rel(self._path + "/" + f) return self._matcher.rel(self._path + "/" + f)
def visitdir(self, dir):
if dir == '.':
dir = self._path
else:
dir = self._path + "/" + dir
return self._matcher.visitdir(dir)
class icasefsmatcher(match): class icasefsmatcher(match):
"""A matcher for wdir on case insensitive filesystems, which normalizes the """A matcher for wdir on case insensitive filesystems, which normalizes the
given patterns to the case in the filesystem. given patterns to the case in the filesystem.