Class SectionNode

java.lang.Object
ch.njol.skript.config.Node
ch.njol.skript.config.SectionNode
All Implemented Interfaces:
NodeNavigator, AnyNamed, AnyProvider, Iterable<Node>, Validated

public class SectionNode extends Node implements Iterable<Node>
  • Constructor Details

  • Method Details

    • size

      public int size()
      Returns:
      Total amount of nodes (including void nodes) in this section.
    • add

      public void add(Node n)
      Adds the given node at the end of this section.
      Parameters:
      n -
    • add

      public void add(int index, @NotNull @NotNull Node node)
      Inserts node into this section at the specified position.
      Parameters:
      index - The index, between 0 and size() (inclusive), at which to insert the node
      node - The node to insert
    • insert

      @Deprecated(forRemoval=true) public void insert(Node node, int index)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use add(int, Node) instead.
    • remove

      public void remove(Node n)
      Removes the given node from this section.
      Parameters:
      n -
    • remove

      @Nullable public @Nullable Node remove(String key)
      Removes an entry with the given key.
      Parameters:
      key -
      Returns:
      The removed node, or null if the key didn't match any node.
    • iterator

      @NotNull public @NotNull Iterator<Node> iterator()
      Description copied from interface: NodeNavigator
      If this navigator represents a node with no children (e.g. an entry node) this iterator will be empty.
      Specified by:
      iterator in interface Iterable<Node>
      Specified by:
      iterator in interface NodeNavigator
      Returns:
      An iterator over all non-void nodes in this section.
    • fullIterator

      @NotNull public @NotNull Iterator<Node> fullIterator()
      Returns:
      An iterator over all nodes in this section, including void nodes.
    • get

      @Nullable public @Nullable Node get(@Nullable @Nullable String key)
      Gets a subnode (EntryNode or SectionNode) with the specified name.
      Specified by:
      get in interface NodeNavigator
      Parameters:
      key -
      Returns:
      The node with the given name
    • getValue

      @Nullable public @Nullable String getValue(String key)
      Description copied from interface: NodeNavigator
      Gets the raw value from the node at the given path. If any part of the path is invalid, this will return null.
      Specified by:
      getValue in interface NodeNavigator
      Parameters:
      key - The node path from which to get the value
      Returns:
      If such a node exists, its value, otherwise null
    • get

      public String get(String name, String def)
      Gets an entry's value or the default value if it doesn't exist or is not an EntryNode.
      Parameters:
      name - The name of the node (case insensitive)
      def - The default value
      Returns:
      The value of the entry node with the give node, or def if there's no entry with the given name.
    • set

      public void set(String key, String value)
    • set

      public void set(String key, @Nullable @Nullable Node node)
    • isEmpty

      public boolean isEmpty()
    • convertToEntries

      public void convertToEntries(int levels)
      Converts all SimpleNodes in this section to EntryNodes.
      Parameters:
      levels - Amount of levels to go down, e.g. 0 to only convert direct subnodes of this section or -1 for all subnodes including subnodes of subnodes etc.
    • convertToEntries

      public void convertToEntries(int levels, String separator)
      REMIND breaks saving - separator argument can be different from config.sepator
      Parameters:
      levels - Maximum depth of recursion, -1 for no limit.
      separator - Some separator, e.g. ":" or "=".
    • save

      public void save(PrintWriter w)
      Overrides:
      save in class Node
    • validate

      public boolean validate(SectionValidator validator)
    • isValid

      public boolean isValid()
      Returns:
      True if this section and all children are valid, i.e. they contain no invalid nodes.
    • setValues

      public boolean setValues(SectionNode other, String... excluded)
      Updates the values of this SectionNode based on the values of another SectionNode.
      Parameters:
      other - The other SectionNode.
      excluded - Keys to exclude from this update.
      Returns:
      True if there are differences in the keys of this SectionNode and the other SectionNode.
    • compareValues

      public boolean compareValues(SectionNode other, String... excluded)
      Compares the keys and values of this SectionNode and another.
      Parameters:
      other - The other SectionNode.
      excluded - Keys to exclude from this comparison.
      Returns:
      True if there are no differences in the keys and their values of this SectionNode and the other SectionNode.
    • getNodeAt

      @Nullable public @Nullable Node getNodeAt(@NotNull @NotNull String @NotNull ... keys)
      Description copied from interface: NodeNavigator
      Fetches a node at position inside the current node. If any stage represents a node with no children (e.g. an entry node) the result will be null.

      In the following example, the two entry nodes can be obtained from the root with "first", "one" and "first", "two", "three" (respectively).
      
       first:
       	one: value
       	two:
       		three: value
       
      Specified by:
      getNodeAt in interface NodeNavigator
      Parameters:
      keys - The node steps to traverse
      Returns:
      The node at the final step (or nothing)