public static Generic.IEnumerator <Tasks.Task <char?> > Decode(this Generic.IEnumerator <Tasks.Task <byte?> > me, Encoding encoding) { while (true) { yield return(encoding.Decode(me)); } }
static async Tasks.Task <T> FilterNext <T>(this Generic.IEnumerator <Tasks.Task <T> > me, Func <T, bool> predicate) { var result = await me.Next(); if (!predicate(result)) { result = await me.FilterNext(predicate); } return(result); }
public Tasks.Task <char?> Decode(Generic.IEnumerator <Tasks.Task <byte?> > data) { return(this.Decode(() => { Tasks.Task <byte?> result = null; if (data.MoveNext()) { result = data.Current; } return result; })); }
public static async Tasks.Task <bool> Join(this ITextWriter me, Generic.IEnumerator <Func <ITextWriter, Tasks.Task <bool> > > items, Func <ITextWriter, Tasks.Task <bool> > separator = null) { bool result = items.MoveNext() && await items.Current(me); while (result && items.MoveNext()) { if (separator.NotNull()) { result &= await separator(me); } result &= await items.Current(me); } return(result); }
public static async Tasks.Task <Generic.IEnumerator <T> > WhenAll <T>(this Generic.IEnumerator <Tasks.Task <T> > me) { var current = await me.Next(); return(current.IsNull() ? Enumerator.Create(current) : (await me.WhenAll()).Prepend(current)); }
public static Generic.IEnumerator <Tasks.Task <T> > FilterTasks <T>(this Generic.IEnumerator <Tasks.Task <T> > me, Func <T, bool> predicate) { return(Enumerator.Create(() => me.FilterNext(predicate), me.Reset, me.Dispose)); }
public static Tasks.Task <bool> Join(this ITextWriter me, Generic.IEnumerator <Func <ITextWriter, Tasks.Task <bool> > > items, string separator = null) { return(me.Join(items, separator.NotNull() ? (Func <ITextWriter, Tasks.Task <bool> >)(writer => writer.Write(separator)) : null)); }