nextParsedAll property

  1. @override
List<Node> nextParsedAll

Similar to nextElement but it returns a Node of what was parsed immediately after the current element. It might be doc comment, element, part of string, etc...

To get the String (data) representation of this Node, use node.data.

Returns a list of nextParseds.

Implementation

@override
List<Node> get nextParsedAll {
  // TODO: recursive search: iterate also in siblings though descendants?
  final nextParsedAll = <Node>[];

  final element = this.element;
  if (element == null) return nextParsedAll;

  // find within children
  if (element.hasChildNodes()) {
    final descendants = element.nodes
        .map((node) => recursiveNodeSearch(node))
        .expand((e) => e)
        .toList();
    nextParsedAll.addAll(descendants);
  }

  final parentNode = element.parentNode;
  if (parentNode == null) return nextParsedAll;

  // find within next siblings
  final nextIndex = _getCurrNodeIndex(parentNode, element) + 1;
  final allSiblings = parentNode.nodes;
  if (nextIndex < allSiblings.length) {
    final rangeList = allSiblings.getRange(nextIndex, allSiblings.length);
    nextParsedAll.addAll(rangeList);
  }

  // find within parent and next siblings
  Node prevNode = parentNode;
  Node? parent = parentNode.parentNode;
  while (parent != null) {
    final nextIndex = _getCurrNodeIndex(parent, prevNode) + 1;
    final allSiblings = parent.nodes;

    if (nextIndex < allSiblings.length) {
      final rangeList = allSiblings.getRange(nextIndex, allSiblings.length);
      nextParsedAll.addAll(rangeList);
    }

    prevNode = parent;
    parent = parent.parentNode;
  }

  return nextParsedAll;
}