mercurial/revset.py
changeset 20725 cf628b50afbb
parent 20724 e9a64b3f2925
child 20726 6eb9c4a9a12b
equal deleted inserted replaced
20724:e9a64b3f2925 20725:cf628b50afbb
  2202     def __add__(self, x):
  2202     def __add__(self, x):
  2203         s = self.set()
  2203         s = self.set()
  2204         l = [r for r in x if r not in s]
  2204         l = [r for r in x if r not in s]
  2205         return baseset(list(self) + l)
  2205         return baseset(list(self) + l)
  2206 
  2206 
       
  2207     def isascending(self):
       
  2208         return False
       
  2209 
       
  2210     def isdescending(self):
       
  2211         return False
       
  2212 
  2207     def filter(self, l):
  2213     def filter(self, l):
  2208         return lazyset(self, l)
  2214         return lazyset(self, l)
  2209 
  2215 
  2210 class lazyset(object):
  2216 class lazyset(object):
  2211     """Duck type for baseset class which iterates lazily over the revisions in
  2217     """Duck type for baseset class which iterates lazily over the revisions in
  2267     def reverse(self):
  2273     def reverse(self):
  2268         self._subset.reverse()
  2274         self._subset.reverse()
  2269 
  2275 
  2270     def set(self):
  2276     def set(self):
  2271         return set([r for r in self])
  2277         return set([r for r in self])
       
  2278 
       
  2279     def isascending(self):
       
  2280         return False
       
  2281 
       
  2282     def isdescending(self):
       
  2283         return False
  2272 
  2284 
  2273     def filter(self, l):
  2285     def filter(self, l):
  2274         return lazyset(self, l)
  2286         return lazyset(self, l)
  2275 
  2287 
  2276 class orderedlazyset(lazyset):
  2288 class orderedlazyset(lazyset):
  2306                 self._subset.sort(reverse=reverse)
  2318                 self._subset.sort(reverse=reverse)
  2307         else:
  2319         else:
  2308             if not self._ascending:
  2320             if not self._ascending:
  2309                 self._subset.sort(reverse=reverse)
  2321                 self._subset.sort(reverse=reverse)
  2310         self._ascending = not reverse
  2322         self._ascending = not reverse
       
  2323 
       
  2324     def isascending(self):
       
  2325         return self._ascending
       
  2326 
       
  2327     def isdescending(self):
       
  2328         return not self._ascending
  2311 
  2329 
  2312     def reverse(self):
  2330     def reverse(self):
  2313         self._subset.reverse()
  2331         self._subset.reverse()
  2314         self._ascending = not self._ascending
  2332         self._ascending = not self._ascending
  2315 
  2333 
  2619             self._start, self._end = self._end + 1, self._start + 1
  2637             self._start, self._end = self._end + 1, self._start + 1
  2620 
  2638 
  2621     def set(self):
  2639     def set(self):
  2622         return self
  2640         return self
  2623 
  2641 
       
  2642     def isascending(self):
       
  2643         return self._start < self._end
       
  2644 
       
  2645     def isdescending(self):
       
  2646         return self._start > self._end
       
  2647 
  2624     def filter(self, l):
  2648     def filter(self, l):
  2625         if self._start <= self._end:
  2649         if self._start <= self._end:
  2626             return orderedlazyset(self, l)
  2650             return orderedlazyset(self, l)
  2627         else:
  2651         else:
  2628             return orderedlazyset(self, l, ascending=False)
  2652             return orderedlazyset(self, l, ascending=False)