public Node previousNode() {/* Docs: https://dom.spec.whatwg.org/#concept-traversal-active */ Node node = referenceNode; bool beforeNode = pointerBeforeReferenceNode; while (true) { /* 1) If beforeNode is true, then set node to the first node preceding node in iterator’s iterator collection. If there is no such node, then return null. */ if (beforeNode) { int i = iterCollection.IndexOf(node); if (i <= 0) { return(null); } node = iterCollection[i - 1]; } else { beforeNode = true; } /* 2) Let result be the result of filtering node within iterator. */ ENodeFilterResult result = filterNode(node); /* 3) If result is FILTER_ACCEPT, then break. */ if (result == ENodeFilterResult.FILTER_ACCEPT) { break; } } /* 4) Set iterator’s reference to node. */ referenceNode = node; /* 5) Set iterator’s pointer before reference to beforeNode. */ pointerBeforeReferenceNode = beforeNode; /* 6) Return node. */ return(node); }
public FilterShadowIncludingDescendantOf(Node targetNode, ENodeFilterResult affirmative, ENodeFilterResult negative) : this(targetNode) { Affirmative = affirmative; Negative = negative; }