
com.greenpepper.shaded.com.vladsch.flexmark.ast.NodeIterable Maven / Gradle / Ivy
The newest version!
package com.greenpepper.shaded.com.vladsch.flexmark.ast;
import com.greenpepper.shaded.com.vladsch.flexmark.util.collection.Consumer;
import com.greenpepper.shaded.com.vladsch.flexmark.util.collection.iteration.ReversibleIterator;
import com.greenpepper.shaded.com.vladsch.flexmark.util.collection.iteration.ReversiblePeekingIterable;
import com.greenpepper.shaded.com.vladsch.flexmark.util.collection.iteration.ReversiblePeekingIterator;
public class NodeIterable implements ReversiblePeekingIterable {
final Node firstNode;
final Node lastNode;
final boolean reversed;
public NodeIterable(Node firstNode, Node lastNode, boolean reversed) {
this.firstNode = firstNode;
this.lastNode = lastNode;
this.reversed = reversed;
}
@Override
public ReversiblePeekingIterator iterator() {
return new NodeIterator(firstNode, lastNode, reversed);
}
public void forEach(Consumer super Node> consumer) {
ReversibleIterator iterator = iterator();
while (iterator.hasNext()) {
consumer.accept(iterator.next());
}
}
@Override
public ReversiblePeekingIterable reversed() {
return new NodeIterable(firstNode, lastNode, !reversed);
}
@Override
public boolean isReversed() {
return reversed;
}
@Override
public ReversiblePeekingIterator reversedIterator() {
return new NodeIterator(firstNode, lastNode, !reversed);
}
public static final ReversiblePeekingIterable EMPTY = new ReversiblePeekingIterable() {
@Override
public ReversiblePeekingIterator iterator() {
return NodeIterator.EMPTY;
}
@Override
public ReversiblePeekingIterable reversed() {
return this;
}
public void forEach(Consumer super Node> consumer) {
}
@Override
public boolean isReversed() {
return false;
}
@Override
public ReversiblePeekingIterator reversedIterator() {
return NodeIterator.EMPTY;
}
};
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy