Esempio n. 1
0
        public static Func <T, IPromise <ControlValue <E> > > Canonical <T, E>(this PromiseFactory factory, Func <T, IPromise <NullableResult <E> > > fn)
        {
            return(factory.Canonical <T, E>(x => factory.SafeThen(fn(x), result =>
            {
                if (result == null || !result.HasResult)
                {
                    return ControlValue <E> .Next;
                }

                return ControlValue <E> .Return(result.Result);
            })));
        }
Esempio n. 2
0
        public If ElseIf(Func <IPromise <ControlValue <bool> > > newCondition)
        {
            return(new If(Factory, () => Factory.SafeThen(_condition, check =>
            {
                if (check == null || check.State != ControlState.Return || !check.HasValue)
                {
                    return Factory.Value(ControlValue <bool> .Break);
                }

                if (check.Value)
                {
                    return Factory.Value(ControlValue <bool> .Return(false));
                }

                return newCondition();
            })));
        }
Esempio n. 3
0
        public If <T> ElseIf(Action <Scope <bool> > condition)
        {
            return(new If <T>(_owner, block =>
            {
                block.Return(() => _owner.BeginImmediately(_condition).Finish().Then(result =>
                {
                    if (result == null || result.State != ControlState.Return || !result.HasValue)
                    {
                        return _owner.Factory.Value(result);
                    }

                    if (result.Value)
                    {
                        return _owner.Factory.Value(ControlValue <bool> .Return(false));
                    }

                    return _owner.BeginImmediately(condition).Finish();
                }));
            }));
        }
Esempio n. 4
0
 public static Func <T, IPromise <ControlValue <E> > > Canonical <T, E>(this PromiseFactory factory, Func <T, IPromise <E> > fn)
 {
     return(factory.Canonical <T, E>(x => factory.SafeThen(fn(x), result => ControlValue <E> .Return(result))));
 }
Esempio n. 5
0
 public static Func <IPromise <ControlValue <T> > > Canonical <T>(this PromiseFactory factory, Func <IPromise <T> > fn)
 {
     return(factory.Canonical(() => factory.SafeThen(fn, result => ControlValue <T> .Return(result))));
 }