lib: detach ForAbuser from Collection
authorJean Privat <jean@pryen.org>
Fri, 25 Oct 2013 14:48:13 +0000 (10:48 -0400)
committerJean Privat <jean@pryen.org>
Fri, 25 Oct 2013 14:48:13 +0000 (10:48 -0400)
Since it is no more a requirement.

Signed-off-by: Jean Privat <jean@pryen.org>

lib/for_abuse.nit

index 9ecaf63..ab469a6 100644 (file)
@@ -25,13 +25,26 @@ module for_abuse
 # The service is not effectively started until the iterate method
 # is called. Then, each step of the iteration is a step in the service.
 #
-# While, for a typing point of view, abusers are just collections,
-# the point of this class is to tag services that return a ForAbuser
-# object.
-# Note that using abuser as genuine collection should work but is not
-# recommended since it may cause mental health issues.
+# While, for a typing point of view, abusers are just classes with an
+# iterator method, the point of this class is to tag services that return
+# a ForAbuser object.
+#
+# Note that using having `ForAbuser` as a genuine subclass of `Collection`
+# works but is not recommended since it may cause mental health issues.
 interface ForAbuser[E]
-       super Collection[E]
+       # Starts and control the service
+       fun iterator: Iterator[E] is abstract
+
+       # Starts and contol the service (for `nitc`)
+       fun iterate
+               !each(e: E)
+       do
+               var i = iterator
+               while i.is_ok do
+                       each(i.item)
+                       i.next
+               end
+       end
 end
 
 # Abuser to read a file, see `file_open`