Index: packages/quiver_iterables/lib/src/generating_iterable.dart |
diff --git a/packages/quiver_iterables/lib/src/generating_iterable.dart b/packages/quiver_iterables/lib/src/generating_iterable.dart |
deleted file mode 100644 |
index 13041a66f621132a4e9db2952182b5f036f2f121..0000000000000000000000000000000000000000 |
--- a/packages/quiver_iterables/lib/src/generating_iterable.dart |
+++ /dev/null |
@@ -1,74 +0,0 @@ |
-// Copyright 2014 Google Inc. All Rights Reserved. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
- |
-part of quiver.iterables; |
- |
-Iterable generate(initial(), next(o)) => new GeneratingIterable(initial, next); |
- |
-/// An Iterable who's first value is [object] and who's subsequent values are |
-/// generated by passing the current value to the [next] function. |
-/// |
-/// The class is useful for creating lazy iterables from object hierarchies and |
-/// graphs. |
-/// |
-/// It's important that for the given initial value and next function that the |
-/// sequence of items eventually terminates. Otherwise calling methods that |
-/// expect a finite sequence, like `length` or `last`, will cause an infinite |
-/// loop. |
-/// |
-/// Example: |
-/// |
-/// class Node { |
-/// Node parent; |
-/// |
-/// /// An iterable of node and all ancestors up to the root. |
-/// Iterable<Node> ancestors = |
-/// new GeneratingIterable<Node>(() => this, (n) => n.parent); |
-/// |
-/// /// An iterable of the root and the path of nodes to this. The |
-/// /// reverse of ancestors. |
-/// Iterable<Node> path = ancestors.toList().reversed(); |
-/// } |
-/// |
-class GeneratingIterable<T> extends IterableBase<T> { |
- final initial; |
- final next; |
- |
- GeneratingIterable(T this.initial(), T this.next(T o)); |
- |
- @override |
- Iterator<T> get iterator => new _GeneratingIterator(initial(), next); |
-} |
- |
-class _GeneratingIterator<T> implements Iterator<T> { |
- final next; |
- T object; |
- bool started = false; |
- |
- _GeneratingIterator(T this.object, T this.next(T o)); |
- |
- @override |
- T get current => started ? object : null; |
- |
- @override |
- bool moveNext() { |
- if (object == null) return false; |
- if (started) { |
- object = next(object); |
- } else { |
- started = true; |
- } |
- return object != null; |
- } |
-} |