All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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 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 consumer) {

        }

        @Override
        public boolean isReversed() {
            return false;
        }

        @Override
        public ReversiblePeekingIterator reversedIterator() {
            return NodeIterator.EMPTY;
        }
    };
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy