On Fri, 12 Jan 2018 22:21:59 -0500, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbi...@yahoo.com>
> # Date 1515641014 18000
> #      Wed Jan 10 22:23:34 2018 -0500
> # Node ID b66e906f11f758eb3b3b0f5bc56cf66229f343b7
> # Parent  2201fc4fd6d3d9dda72459c6642c16acbe6fc0a4
> fileset: add a lightweight file filtering language

Also queued, thanks.

> +def _compile(tree):
> +    if not tree:
> +        raise error.ParseError(_("missing argument"))
> +    op = tree[0]
> +    if op == 'symbol':
> +        name = fileset.getstring(tree, _('invalid file pattern'))
> +        if name.startswith('**'): # file extension test, ex. "**.tar.gz"
> +            ext = name[2:]
> +            for c in ext:
> +                if c in '*{}[]?/\\':
> +                    raise error.ParseError(_('reserved character: %s') % c)
> +            return lambda n, s: n.endswith(ext)
> +        else:
> +            raise error.ParseError(_('invalid symbol: %s') % name)

> +    elif op == 'string':
> +        # TODO: teach fileset about 'path:', so that this can be a symbol and
> +        # not require quoting.
> +        name = fileset.getstring(tree, _('invalid path literal'))
> +        if name.startswith('path:'): # directory or full path test
> +            p = name[5:] # prefix
> +            pl = len(p)
> +            f = lambda n, s: n.startswith(p) and (len(n) == pl or n[pl] == 
> '/')
> +            return f
> +        raise error.ParseError(_("invalid string"),
> +                               hint=_('paths must be prefixed with "path:"'))

I've moved op == 'string' next to 'symbol' as they'll have to be merged later.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to