Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 29265:3f9e68864ccc
revset: define table of sort() key functions
This should be more readable than big "if" branch.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 14 May 2016 19:52:00 +0900 |
parents | 22625884b15c |
children | 5e32852fa4bd |
comparison
equal
deleted
inserted
replaced
29264:22625884b15c | 29265:3f9e68864ccc |
---|---|
1832 if 0 <= p and p in s: | 1832 if 0 <= p and p in s: |
1833 return False | 1833 return False |
1834 return True | 1834 return True |
1835 return subset & s.filter(filter, condrepr='<roots>') | 1835 return subset & s.filter(filter, condrepr='<roots>') |
1836 | 1836 |
1837 _sortkeyfuncs = { | |
1838 'rev': lambda c: c.rev(), | |
1839 'branch': lambda c: c.branch(), | |
1840 'desc': lambda c: c.description(), | |
1841 'user': lambda c: c.user(), | |
1842 'author': lambda c: c.user(), | |
1843 'date': lambda c: c.date()[0], | |
1844 } | |
1845 | |
1837 @predicate('sort(set[, [-]key...])', safe=True) | 1846 @predicate('sort(set[, [-]key...])', safe=True) |
1838 def sort(repo, subset, x): | 1847 def sort(repo, subset, x): |
1839 """Sort set by keys. The default sort order is ascending, specify a key | 1848 """Sort set by keys. The default sort order is ascending, specify a key |
1840 as ``-key`` to sort in descending order. | 1849 as ``-key`` to sort in descending order. |
1841 | 1850 |
1870 for k in reversed(keys): | 1879 for k in reversed(keys): |
1871 fk = k | 1880 fk = k |
1872 reverse = (k[0] == '-') | 1881 reverse = (k[0] == '-') |
1873 if reverse: | 1882 if reverse: |
1874 k = k[1:] | 1883 k = k[1:] |
1875 if k == 'rev': | 1884 try: |
1876 ctxs.sort(key=lambda c: c.rev(), reverse=reverse) | 1885 ctxs.sort(key=_sortkeyfuncs[k], reverse=reverse) |
1877 elif k == 'branch': | 1886 except KeyError: |
1878 ctxs.sort(key=lambda c: c.branch(), reverse=reverse) | |
1879 elif k == 'desc': | |
1880 ctxs.sort(key=lambda c: c.description(), reverse=reverse) | |
1881 elif k in 'user author': | |
1882 ctxs.sort(key=lambda c: c.user(), reverse=reverse) | |
1883 elif k == 'date': | |
1884 ctxs.sort(key=lambda c: c.date()[0], reverse=reverse) | |
1885 else: | |
1886 raise error.ParseError(_("unknown sort key %r") % fk) | 1887 raise error.ParseError(_("unknown sort key %r") % fk) |
1887 return baseset([c.rev() for c in ctxs]) | 1888 return baseset([c.rev() for c in ctxs]) |
1888 | 1889 |
1889 @predicate('subrepo([pattern])') | 1890 @predicate('subrepo([pattern])') |
1890 def subrepo(repo, subset, x): | 1891 def subrepo(repo, subset, x): |