X-Git-Url: http://nitlanguage.org diff --git a/lib/pipeline.nit b/lib/pipeline.nit index 0c422ed..be553ad 100644 --- a/lib/pipeline.nit +++ b/lib/pipeline.nit @@ -14,9 +14,8 @@ # Pipelined filters and operations on iterators. # -# This module enhance `Iterator`s with some methods that enable a -# pipeline-like programing that offers the manupulation of -# collections trough connected filters with reasonable memory constraints. +# This module enhances `Iterator` with some methods that enable a pipeline-like programing. +# The processing of elements in a pipeline is done trough connected filters that are implemented with reasonable memory constraints. module pipeline redef interface Iterator[E] @@ -35,7 +34,9 @@ redef interface Iterator[E] # Filter: sort with a given `comparator`. # Important: require O(n) memory. - fun sort_with(comparator: Comparator[E]): Iterator[E] + # + # assert ["a", "c", "b"].iterator.sort_with(alpha_comparator).to_a == ["a", "b", "c"] + fun sort_with(comparator: Comparator): Iterator[E] do var a = self.to_a comparator.sort(a) @@ -294,13 +295,7 @@ private class PipeSkip[E] var source: Iterator[E] var skip_item: E - init(source: Iterator[E], skip_item: E) - do - self.source = source - self.skip_item = skip_item - - do_skip - end + init do do_skip fun do_skip do @@ -345,10 +340,8 @@ private class PipeSkipTail[E] var lasts = new List[E] - init(source: Iterator[E], length: Int) + init do - self.source = source - self.length = length var lasts = self.lasts while source.is_ok and lasts.length < length do lasts.push(source.item) @@ -375,13 +368,7 @@ private class PipeSelect[E] var predicate: Function[E, Bool] - init(source: Iterator[E], predicate: Function[E, Bool]) - do - self.source = source - self.predicate = predicate - - do_skip - end + init do do_skip fun do_skip do