[PATCH 2 of 2] revset: define table of sort() key functions

Augie Fackler raf at durin42.com
Sun May 29 17:02:43 EDT 2016


On Wed, May 25, 2016 at 11:37:55PM +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1463223120 -32400
> #      Sat May 14 19:52:00 2016 +0900
> # Node ID edbf799691811456b2fc052750221672d4ee3e43
> # Parent  63b2515cfc673094cc085ef929aeb34ace042e74
> revset: define table of sort() key functions

Queued these, thanks.

>
> This should be more readable than big "if" branch.
>
> diff --git a/mercurial/revset.py b/mercurial/revset.py
> --- a/mercurial/revset.py
> +++ b/mercurial/revset.py
> @@ -1834,6 +1834,15 @@ def roots(repo, subset, x):
>          return True
>      return subset & s.filter(filter, condrepr='<roots>')
>
> +_sortkeyfuncs = {
> +    'rev': lambda c: c.rev(),
> +    'branch': lambda c: c.branch(),
> +    'desc': lambda c: c.description(),
> +    'user': lambda c: c.user(),
> +    'author': lambda c: c.user(),
> +    'date': lambda c: c.date()[0],
> +}
> +
>  @predicate('sort(set[, [-]key...])', safe=True)
>  def sort(repo, subset, x):
>      """Sort set by keys. The default sort order is ascending, specify a key
> @@ -1870,17 +1879,9 @@ def sort(repo, subset, x):
>          reverse = (k[0] == '-')
>          if reverse:
>              k = k[1:]
> -        if k == 'rev':
> -            ctxs.sort(key=lambda c: c.rev(), reverse=reverse)
> -        elif k == 'branch':
> -            ctxs.sort(key=lambda c: c.branch(), reverse=reverse)
> -        elif k == 'desc':
> -            ctxs.sort(key=lambda c: c.description(), reverse=reverse)
> -        elif k in 'user author':
> -            ctxs.sort(key=lambda c: c.user(), reverse=reverse)
> -        elif k == 'date':
> -            ctxs.sort(key=lambda c: c.date()[0], reverse=reverse)
> -        else:
> +        try:
> +            ctxs.sort(key=_sortkeyfuncs[k], reverse=reverse)
> +        except KeyError:
>              raise error.ParseError(_("unknown sort key %r") % fk)
>      return baseset([c.rev() for c in ctxs])
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list