Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 22813:5a96df266b2b
filteredset: implement `first` and `last`
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 07 Oct 2014 00:18:08 -0700 |
parents | fcd12b310148 |
children | e4eb4bfc3616 |
comparison
equal
deleted
inserted
replaced
22812:fcd12b310148 | 22813:5a96df266b2b |
---|---|
2480 return self._ascending is not None and self._ascending | 2480 return self._ascending is not None and self._ascending |
2481 | 2481 |
2482 def isdescending(self): | 2482 def isdescending(self): |
2483 return self._ascending is not None and not self._ascending | 2483 return self._ascending is not None and not self._ascending |
2484 | 2484 |
2485 def first(self): | |
2486 for x in self: | |
2487 return x | |
2488 return None | |
2489 | |
2490 def last(self): | |
2491 it = None | |
2492 if self._ascending is not None: | |
2493 if self._ascending: | |
2494 it = self.fastdesc | |
2495 else: | |
2496 it = self.fastasc | |
2497 if it is None: | |
2498 # slowly consume everything. This needs improvement | |
2499 it = lambda: reversed(list(self)) | |
2500 for x in it(): | |
2501 return x | |
2502 return None | |
2503 | |
2485 class addset(abstractsmartset): | 2504 class addset(abstractsmartset): |
2486 """Represent the addition of two sets | 2505 """Represent the addition of two sets |
2487 | 2506 |
2488 Wrapper structure for lazily adding two structures without losing much | 2507 Wrapper structure for lazily adding two structures without losing much |
2489 performance on the __contains__ method | 2508 performance on the __contains__ method |