weave method
Weaves two iterables together into a new Iterable alternating elements.
Implementation
Iterable<T> weave(Iterable<T> other) sync* {
bool switcher = true;
Iterator<T> it1 = iterator;
Iterator<T> it2 = other.iterator;
bool hasNext1 = it1.moveNext();
bool hasNext2 = it2.moveNext();
while (hasNext1 || hasNext2) {
if (switcher && hasNext1) {
yield it1.current;
hasNext1 = it1.moveNext();
} else if (hasNext2) {
yield it2.current;
hasNext2 = it2.moveNext();
} else if (hasNext1) {
yield it1.current;
hasNext1 = it1.moveNext();
}
switcher = !switcher;
}
}