mercurial/revset.py
changeset 20610 34bb07e70c68
parent 20609 56ecc82fcd67
child 20611 6490f8385391
--- a/mercurial/revset.py	Wed Feb 05 15:24:08 2014 -0800
+++ b/mercurial/revset.py	Thu Feb 06 17:18:11 2014 -0800
@@ -2146,6 +2146,9 @@
         l = [r for r in x if r not in s]
         return baseset(list(self) + l)
 
+    def filter(self, l):
+        return lazyset(self, l)
+
 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
@@ -2210,6 +2213,9 @@
     def set(self):
         return set([r for r in self])
 
+    def filter(self, l):
+        return lazyset(self, l)
+
 class orderedlazyset(lazyset):
     """Subclass of lazyset which subset can be ordered either ascending or
     descendingly
@@ -2218,6 +2224,9 @@
         super(orderedlazyset, self).__init__(subset, condition)
         self._ascending = ascending
 
+    def filter(self, l):
+        return orderedlazyset(self, l, ascending=self._ascending)
+
 class generatorset(object):
     """Wrapper structure for generators that provides lazy membership and can
     be iterated more than once.
@@ -2357,5 +2366,11 @@
     def set(self):
         return self
 
+    def filter(self, l):
+        if self._start <= self._end:
+            return orderedlazyset(self, l)
+        else:
+            return orderedlazyset(self, l, ascending=False)
+
 # tell hggettext to extract docstrings from these functions:
 i18nfunctions = symbols.values()