Exemplo n.º 1
0
        public IEnumerator <JSNode> GetEnumerator()
        {
            if (IncludeSelf)
            {
                yield return(Node);
            }

            var list = new LinkedList <JSNode>();

            using (var inner = new JSNodeChildEnumerator(Node, TraversalData, false))
                while (inner.MoveNext())
                {
                    var node = inner.Current;
                    if (node != null)
                    {
                        list.AddLast(node);
                    }
                }

            while (list.Count > 0)
            {
                var current = list.First;

                using (var e = current.Value.Children.EnumeratorTemplate)
                    while (e.MoveNext())
                    {
                        var leaf = e.Current;
                        if (leaf != null)
                        {
                            list.AddBefore(current, leaf);
                        }
                    }

                list.Remove(current);

                yield return(current.Value);
            }
        }
Exemplo n.º 2
0
 public JSNodeChildren(JSNode node, JSNodeTraversalData traversalData, bool includeSelf)
 {
     EnumeratorTemplate = new JSNodeChildEnumerator(node, traversalData, includeSelf);
 }