Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 22811:c1fd827e1ae0
generatorset: implement first and last methods
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Mon, 06 Oct 2014 12:52:36 -0700 |
parents | 7f97cb12782f |
children | fcd12b310148 |
comparison
equal
deleted
inserted
replaced
22810:7f97cb12782f | 22811:c1fd827e1ae0 |
---|---|
2765 return self._ascending | 2765 return self._ascending |
2766 | 2766 |
2767 def isdescending(self): | 2767 def isdescending(self): |
2768 return not self._ascending | 2768 return not self._ascending |
2769 | 2769 |
2770 def first(self): | |
2771 if self._ascending: | |
2772 it = self.fastasc | |
2773 else: | |
2774 it = self.fastdesc | |
2775 if it is None: | |
2776 # we need to consume all and try again | |
2777 for x in self._consumegen(): | |
2778 pass | |
2779 return self.first() | |
2780 if self: | |
2781 return it.next() | |
2782 return None | |
2783 | |
2784 def last(self): | |
2785 if self._ascending: | |
2786 it = self.fastdesc | |
2787 else: | |
2788 it = self.fastasc | |
2789 if it is None: | |
2790 # we need to consume all and try again | |
2791 for x in self._consumegen(): | |
2792 pass | |
2793 return self.first() | |
2794 if self: | |
2795 return it.next() | |
2796 return None | |
2797 | |
2770 def spanset(repo, start=None, end=None): | 2798 def spanset(repo, start=None, end=None): |
2771 """factory function to dispatch between fullreposet and actual spanset | 2799 """factory function to dispatch between fullreposet and actual spanset |
2772 | 2800 |
2773 Feel free to update all spanset call sites and kill this function at some | 2801 Feel free to update all spanset call sites and kill this function at some |
2774 point. | 2802 point. |