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):