Пример #1
0
        public bool GetNextArrayItem()
        {
            if (!m_isIterating)
            {
                if (Current.TryGetArray(out var currentArray))
                {
                    var items = currentArray.GetEnumerator();
                    if (items.MoveNext())
                    {
                        m_stack.Push(StackEntry.ArrayItem(Current, items));
                        SetCurrentValue(items.Current);
                        return(true);
                    }
                }
                else
                {
                    m_isIterating = m_stack.Count != 0;
                }
            }
            else if (m_stack.Count != 0)
            {
                var entry = m_stack.Peek();
                if (entry.Value.Type == JSValueType.Array)
                {
                    if (entry.Item.MoveNext())
                    {
                        SetCurrentValue(entry.Item.Current);
                        return(true);
                    }
                    else
                    {
                        Current = entry.Value;
                        m_stack.Pop();
                        m_isIterating = m_stack.Count != 0;
                    }
                }
            }

            return(false);
        }