Mercurial > hg
changeset 20749:c3e49b127de0
revset: added _orderedsetmixin class
This class has utility methods for any ordered class to get the min and the
max values.
author | Lucas Moscovicz <lmoscovicz@fb.com> |
---|---|
date | Wed, 12 Mar 2014 16:40:18 -0700 |
parents | 6b731b29e154 |
children | d4f2f2d74210 |
files | mercurial/revset.py |
diffstat | 1 files changed, 31 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revset.py Wed Feb 19 09:28:17 2014 -0800 +++ b/mercurial/revset.py Wed Mar 12 16:40:18 2014 -0700 @@ -2254,6 +2254,37 @@ This is part of the mandatory API for smartset.""" return lazyset(self, condition) +class _orderedsetmixin(object): + """Mixin class with utility methods for smartsets + + This should be extended by smartsets which have the isascending(), + isdescending() and reverse() methods""" + + def _first(self): + """return the first revision in the set""" + for r in self: + return r + return None + + def _last(self): + """return the last revision in the set""" + self.reverse() + m = self._first() + self.reverse() + return m + + def min(self): + """return the smallest element in the set""" + if self.isascending(): + return self._first() + return self._last() + + def max(self): + """return the largest element in the set""" + if self.isascending(): + return self._last() + return self._first() + class lazyset(object): """Duck type for baseset class which iterates lazily over the revisions in the subset and contains a function which tests for membership in the