nextParsedAll property
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;
}