# HG changeset patch # User Yuya Nishihara # Date 1528631890 -32400 # Node ID 1500cbe22d53ce17093fedaf82a6bcb7a995cc5e # Parent 131aae58a3164e6cdd2c7fbf73d3824c2b0d7623 fileset: parse argument of size() by predicate function This change is necessary to pass in a size expression to predicatematcher. See the next patch. diff -r 131aae58a316 -r 1500cbe22d53 mercurial/fileset.py --- a/mercurial/fileset.py Sun Jun 10 22:19:56 2018 +0900 +++ b/mercurial/fileset.py Sun Jun 10 20:58:10 2018 +0900 @@ -384,11 +384,9 @@ except ValueError: raise error.ParseError(_("couldn't parse size: %s") % s) -def sizematcher(x): +def sizematcher(expr): """Return a function(size) -> bool from the ``size()`` expression""" - - # i18n: "size" is a keyword - expr = getstring(x, _("size requires an expression")).strip() + expr = expr.strip() if '-' in expr: # do we have a range? a, b = expr.split('-', 1) a = util.sizetoint(a) @@ -420,7 +418,9 @@ - size('>= .5MB') - files at least 524288 bytes - size('4k - 1MB') - files from 4096 bytes to 1048576 bytes """ - m = sizematcher(x) + # i18n: "size" is a keyword + expr = getstring(x, _("size requires an expression")) + m = sizematcher(expr) return [f for f in mctx.existing() if m(mctx.ctx[f].size())] @predicate('encoding(name)', callexisting=True) diff -r 131aae58a316 -r 1500cbe22d53 mercurial/minifileset.py --- a/mercurial/minifileset.py Sun Jun 10 22:19:56 2018 +0900 +++ b/mercurial/minifileset.py Sun Jun 10 20:58:10 2018 +0900 @@ -14,6 +14,11 @@ pycompat, ) +def _sizep(x): + # i18n: "size" is a keyword + expr = fileset.getstring(x, _("size requires an expression")) + return fileset.sizematcher(expr) + def _compile(tree): if not tree: raise error.ParseError(_("missing argument")) @@ -50,7 +55,7 @@ symbols = { 'all': lambda n, s: True, 'none': lambda n, s: False, - 'size': lambda n, s: fileset.sizematcher(tree[2])(s), + 'size': lambda n, s: _sizep(tree[2])(s), } name = fileset.getsymbol(tree[1])