previousParsedAll property

  1. @override
List<Node> previousParsedAll

Similar to previousElement but it returns a Node of what was parsed immediately before 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 previousParseds.

Implementation

@override
List<Node> get previousParsedAll {
  final prevParsedAll = <Node>[];

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

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

  // find within parent and prev siblings
  final prevIndex = _getCurrNodeIndex(parentNode, element) - 1;
  final allSiblings = parentNode.nodes;
  if (prevIndex >= 0) {
    final rangeList = allSiblings.getRange(0, prevIndex + 1);
    prevParsedAll.addAll(List.of(rangeList).reversed);
  }

  Node prevNode = parentNode;
  Node? parent = parentNode.parentNode;
  while (parent != null) {
    final prevIndex = _getCurrNodeIndex(parent, prevNode) - 1;
    final allSiblings = parent.nodes;

    if (prevIndex == -1) {
      // top most element (?)
      prevParsedAll.add(allSiblings.first);
    } else if (prevIndex >= 0) {
      final rangeList = allSiblings.getRange(0, prevIndex + 1);
      prevParsedAll.addAll(List.of(rangeList).reversed);
    }

    prevNode = parent;
    parent = parent.parentNode;
  }

  return prevParsedAll;
}