Ejemplo n.º 1
0
            private IEnumerator <object> Yielder(CodeContext context, object function, IEnumerator iter)
            {
                PythonContext pc = PythonContext.GetContext(context);

                while (MoveNextHelper(iter))
                {
                    PythonTuple args = iter.Current as PythonTuple;
                    object[]    objargs;
                    if (args != null)
                    {
                        objargs = new object[args.__len__()];
                        for (int i = 0; i < objargs.Length; i++)
                        {
                            objargs[i] = args[i];
                        }
                    }
                    else
                    {
                        List argsList = new List(PythonOps.GetEnumerator(iter.Current));
                        objargs = ArrayUtils.ToArray(argsList);
                    }

                    yield return(pc.CallSplat(function, objargs));
                }
            }
Ejemplo n.º 2
0
            private IEnumerator <object> Yielder(object predicate, IEnumerator iter)
            {
                PythonContext pc = PythonContext.GetContext(_context);

                while (MoveNextHelper(iter))
                {
                    if (!Converter.ConvertToBoolean(pc.CallSplat(predicate, iter.Current)))
                    {
                        yield return(iter.Current);

                        break;
                    }
                }

                while (MoveNextHelper(iter))
                {
                    yield return(iter.Current);
                }
            }