Ejemplo n.º 1
0
        public bool CombineGeneratorWithIterator(Generator generator, IDynamic other)
        {
            var iterable       = other.ConvertToObject();
            var createIterator = iterable.Get("createIterator") as ICallable;

            if (createIterator == null)
            {
                throw CreateTypeError("");
            }
            var iterator = createIterator.Call(this, iterable, EmptyArgs).ConvertToObject();

            if (!iterator.HasProperty("current"))
            {
                throw CreateTypeError("");
            }
            var next = iterator.Get("next") as ICallable;

            if (next == null)
            {
                throw CreateTypeError("");
            }
            GeneratorStep step = null; step = (_e, _g) =>

            {
                if (!next.Call(this, Undefined, EmptyArgs).ConvertToBoolean().BaseValue)
                {
                    return(false);
                }
                generator.Current = iterator.Get("current");
                generator.Steps.Enqueue(step);
                return(true);
            };
            return(step(this, generator));
        }
Ejemplo n.º 2
0
 public void AddStep(GeneratorStep step)
 {
     if (!Steps.Contains(step))
     {
         Steps.Add(step);
     }
 }