Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public FilterShadowIncludingDescendantOf(Node targetNode, ENodeFilterResult affirmative, ENodeFilterResult negative) : this(targetNode)
 {
     Affirmative = affirmative;
     Negative    = negative;
 }