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)); } }
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); } }