comparison mercurial/fileset.py @ 14673:b0566467c492

fileset: drop matchfn This is now built into contexts
author Matt Mackall <mpm@selenic.com>
date Sat, 18 Jun 2011 16:52:51 -0500
parents 68db17047637
children e80fa502b8cf
comparison
equal deleted inserted replaced
14672:785bbc8634f8 14673:b0566467c492
119 'group': getset, 119 'group': getset,
120 'not': notset 120 'not': notset
121 } 121 }
122 122
123 class matchctx(object): 123 class matchctx(object):
124 def __init__(self, ctx, matchfn, subset=None): 124 def __init__(self, ctx, subset=None):
125 self.ctx = ctx 125 self.ctx = ctx
126 self.matchfn = matchfn
127 self.subset = subset 126 self.subset = subset
128 if subset is None: 127 if subset is None:
129 self.subset = ctx.walk(matchfn([])) # optimize this later 128 self.subset = ctx.walk(self.matcher([])) # optimize this later
130 def matcher(self, pattern): 129 def matcher(self, patterns):
131 return self.matchfn(pattern) 130 return self.ctx.match(patterns)
132 def filter(self, files): 131 def filter(self, files):
133 return [f for f in files if f in self.subset] 132 return [f for f in files if f in self.subset]
134 def narrow(self, files): 133 def narrow(self, files):
135 return matchctx(self.ctx, self.matchfn, 134 return matchctx(self.ctx, self.filter(files))
136 self.filter(files))
137 135
138 def getfileset(ctx, matchfn, expr): 136 def getfileset(ctx, expr):
139 tree, pos = parse(expr) 137 tree, pos = parse(expr)
140 if (pos != len(expr)): 138 if (pos != len(expr)):
141 raise error.ParseError("invalid token", pos) 139 raise error.ParseError("invalid token", pos)
142 return getset(matchctx(ctx, matchfn), tree) 140 return getset(matchctx(ctx), tree)