Class ArrayNode

  • All Implemented Interfaces:
    java.lang.Iterable<Node>, FromSourceLocation, ToNode

    public final class ArrayNode
    extends Node
    implements java.lang.Iterable<Node>
    Represents an array of nodes.
    • Constructor Detail

      • ArrayNode

        public ArrayNode​(java.util.List<Node> elements,
                         SourceLocation sourceLocation)
    • Method Detail

      • iterator

        public java.util.Iterator<Node> iterator()
        Specified by:
        iterator in interface java.lang.Iterable<Node>
      • getType

        public NodeType getType()
        Description copied from class: Node
        Gets the type of the node.
        Specified by:
        getType in class Node
        Returns:
        Returns the node type.
      • accept

        public <R> R accept​(NodeVisitor<R> visitor)
        Description copied from class: Node
        Accepts a visitor with the node.
        Specified by:
        accept in class Node
        Type Parameters:
        R - visitor return type.
        Parameters:
        visitor - Visitor to dispatch to.
        Returns:
        Returns the accepted result.
      • expectArrayNode

        public ArrayNode expectArrayNode​(java.lang.String errorMessage)
        Description copied from class: Node
        Casts the current node to an ArrayNode, throwing ExpectationNotMetException when the node is the wrong type.
        Overrides:
        expectArrayNode in class Node
        Parameters:
        errorMessage - Error message to use if the node is of the wrong type.
        Returns:
        Returns an array node.
      • asArrayNode

        public java.util.Optional<ArrayNode> asArrayNode()
        Description copied from class: Node
        Gets the node as an ArrayNode if it is an array.
        Overrides:
        asArrayNode in class Node
        Returns:
        Returns the optional array node.
      • getElements

        public java.util.List<Node> getElements()
        Gets the list of nodes.
        Returns:
        Returns a list of nodes.
      • get

        public java.util.Optional<Node> get​(int index)
        Gets a node from the given index.
        Parameters:
        index - Index of the value to get.
        Returns:
        Returns an optional node at the given index.
      • isEmpty

        public boolean isEmpty()
        Returns true if the array node is empty.
        Returns:
        Returns true if the array node is empty.
      • size

        public int size()
        Returns the number of elements in the array node.
        Returns:
        Returns the number of elements in the array node.
      • withValue

        public ArrayNode withValue​(Node node)
        Copies the values from the current array node, adding the given node, returning them in a new ArrayNode.
        Parameters:
        node - The node to add.
        Returns:
        Returns a new array node.
      • getElementsAs

        public <T extends Node> java.util.List<T> getElementsAs​(java.lang.Class<T> type)
        Gets the elements of the array as a list of a specific type of Node.
        Type Parameters:
        T - Type of Node to expect in each position.
        Parameters:
        type - Type of Node to expect in each position.
        Returns:
        Returns the List of the specified type.
        Throws:
        ExpectationNotMetException - if the list contains elements of a different type.
      • getElementsAs

        public <T,​K extends Node> java.util.List<T> getElementsAs​(java.util.function.Function<K,​T> f)
        Gets the elements of the ArrayNode as a specific type by applying a mapping function to each node.

        Each Node is cast to K and then mapped with the provided function to return type T.

        
         ArrayNode array = Node.fromStrings("foo", "baz", "bar");
         List<String> strings = array.getElementsAs(StringNode::getValue);
         
        Type Parameters:
        K - Expected Node type.
        T - Mapping function return value.
        Parameters:
        f - Mapping function that takes K and return T.
        Returns:
        Returns the List of type T.
        Throws:
        ExpectationNotMetException - if the list contains elements of a different type than K.
      • merge

        public ArrayNode merge​(ArrayNode other)
        Merges two ArrayNodes into a new ArrayNode.

        If the current node has a source location, it is applied to the result. Otherwise, the source location of other is applied to the result.

        Parameters:
        other - Node to merge with.
        Returns:
        Returns a new merged array node.
      • collect

        public static <T extends ToNode> java.util.stream.Collector<T,​java.util.List<Node>,​ArrayNode> collect()
        Type Parameters:
        T - Type of value in the collection.
        Returns:
        Creates a collector that create an ArrayNode.
      • collect

        public static <T extends ToNode> java.util.stream.Collector<T,​java.util.List<Node>,​ArrayNode> collect​(SourceLocation sloc)
        Type Parameters:
        T - Type of value in the collection.
        Parameters:
        sloc - Source location to use on the created node.
        Returns:
        Creates a collector that create an ArrayNode.
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object