コード例 #1
0
        public Value Evaluate(ArrayStream stream)
        {
            var array = new Array();

            while (array.Length < stream.Limit)
            {
                Value value = stream.Next();
                if (value.Type == Value.ValueType.Nil)
                {
                    return(array);
                }
                var skip = false;
                foreach (Item item in items)
                {
                    var iterItem = new Array.IterItem
                    {
                        Value = value,
                        Key   = Array.GetKey(),
                        Index = array.Length
                    };
                    value = item.Process(iterItem, array.Length);
                    if (value == null || value.Type == Value.ValueType.Nil)
                    {
/*						if (item.IsTerminating)
 *                                                      return array;*/
                        skip = true;
                        break;
                    }
                }
                if (!skip)
                {
                    array.Add(value);
                }
            }
            return(array);
        }