comparison mercurial/fileset.py @ 14682:8785fd757077

fileset: add grep predicate
author Matt Mackall <mpm@selenic.com>
date Sat, 18 Jun 2011 16:53:49 -0500
parents 0744db5eb51c
children 281102f37b24
comparison
equal deleted inserted replaced
14681:0744db5eb51c 14682:8785fd757077
3 # Copyright 2010 Matt Mackall <mpm@selenic.com> 3 # Copyright 2010 Matt Mackall <mpm@selenic.com>
4 # 4 #
5 # This software may be used and distributed according to the terms of the 5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version. 6 # GNU General Public License version 2 or any later version.
7 7
8 import parser, error, util, merge 8 import parser, error, util, merge, re
9 from i18n import _ 9 from i18n import _
10 10
11 elements = { 11 elements = {
12 "(": (20, ("group", 1, ")"), ("func", 1, ")")), 12 "(": (20, ("group", 1, ")"), ("func", 1, ")")),
13 "-": (5, ("negate", 19), ("minus", 5)), 13 "-": (5, ("negate", 19), ("minus", 5)),
233 """ 233 """
234 getargs(x, 0, 0, _("hgignore takes no arguments")) 234 getargs(x, 0, 0, _("hgignore takes no arguments"))
235 ignore = mctx.ctx._repo.dirstate._ignore 235 ignore = mctx.ctx._repo.dirstate._ignore
236 return [f for f in mctx.subset if ignore(f)] 236 return [f for f in mctx.subset if ignore(f)]
237 237
238 def grep(mctx, x):
239 """``grep(regex)``
240 File contains the given regular expression.
241 """
242 pat = getstring(x, _("grep requires a pattern"))
243 r = re.compile(pat)
244 return [f for f in mctx.subset if r.search(mctx.ctx[f].data())]
245
238 symbols = { 246 symbols = {
239 'added': added, 247 'added': added,
240 'binary': binary, 248 'binary': binary,
241 'clean': clean, 249 'clean': clean,
242 'deleted': deleted, 250 'deleted': deleted,
243 'exec': exec_, 251 'exec': exec_,
252 'grep': grep,
244 'ignored': ignored, 253 'ignored': ignored,
245 'hgignore': hgignore, 254 'hgignore': hgignore,
246 'modified': modified, 255 'modified': modified,
247 'removed': removed, 256 'removed': removed,
248 'resolved': resolved, 257 'resolved': resolved,