Ejemplo n.º 1
0
 public static void Match <TKey, TValue>(this Maybe <KeyValuePair <TKey, TValue> > maybe, Action <TKey, TValue> Some, Action None)
 {
     if (maybe.HasValue)
     {
         Some.Invoke(maybe.GetValueOrThrow().Key, maybe.GetValueOrThrow().Value);
     }
     else
     {
         None.Invoke();
     }
 }
Ejemplo n.º 2
0
        public static Result <T, E> ToResult <T, E>(this Maybe <T> maybe, E error)
        {
            if (maybe.HasNoValue)
            {
                return(Result.Failure <T, E>(error));
            }

            return(Result.Success <T, E>(maybe.GetValueOrThrow()));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Executes the given async <paramref name="action" /> if the <paramref name="maybe" /> has a value
        /// </summary>
        /// <param name="maybe"></param>
        /// <param name="action"></param>
        /// <typeparam name="T"></typeparam>
        public static async Task Execute <T>(this Maybe <T> maybe, Func <T, Task> action)
        {
            if (maybe.HasNoValue)
            {
                return;
            }

            await action(maybe.GetValueOrThrow()).DefaultAwait();
        }
Ejemplo n.º 4
0
        public static T GetValueOrDefault <T>(this Maybe <T> maybe, Func <T> defaultValue)
        {
            if (maybe.HasNoValue)
            {
                return(defaultValue());
            }

            return(maybe.GetValueOrThrow());
        }
        public static async Task <K> GetValueOrDefault <T, K>(this Maybe <T> maybe, Func <T, Task <K> > selector, Func <Task <K> > defaultValue)
        {
            if (maybe.HasNoValue)
            {
                return(await defaultValue().DefaultAwait());
            }

            return(await selector(maybe.GetValueOrThrow()).DefaultAwait());
        }
Ejemplo n.º 6
0
        public static Maybe <K> Bind <T, K>(this Maybe <T> maybe, Func <T, Maybe <K> > selector)
        {
            if (maybe.HasNoValue)
            {
                return(Maybe <K> .None);
            }

            return(selector(maybe.GetValueOrThrow()));
        }
        public static Task <Maybe <K> > Bind <T, K>(this Maybe <T> maybe, Func <T, Task <Maybe <K> > > selector)
        {
            if (maybe.HasNoValue)
            {
                return(Maybe <K> .None.AsCompletedTask());
            }

            return(selector(maybe.GetValueOrThrow()));
        }
        public static async Task <T> GetValueOrDefault <T>(this Maybe <T> maybe, Func <Task <T> > defaultValue)
        {
            if (maybe.HasNoValue)
            {
                return(await defaultValue().DefaultAwait());
            }

            return(maybe.GetValueOrThrow());
        }
Ejemplo n.º 9
0
        public static K GetValueOrDefault <T, K>(this Maybe <T> maybe, Func <T, K> selector, Func <K> defaultValue)
        {
            if (maybe.HasNoValue)
            {
                return(defaultValue());
            }

            return(selector(maybe.GetValueOrThrow()));
        }
        public static async Task <Maybe <K> > Map <T, K>(this Maybe <T> maybe, Func <T, Task <K> > selector)
        {
            if (maybe.HasNoValue)
            {
                return(Maybe <K> .None);
            }

            return(await selector(maybe.GetValueOrThrow()).DefaultAwait());
        }
Ejemplo n.º 11
0
        public static Result <T> ToResult <T>(this Maybe <T> maybe, string errorMessage)
        {
            if (maybe.HasNoValue)
            {
                return(Result.Failure <T>(errorMessage));
            }

            return(Result.Success(maybe.GetValueOrThrow()));
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Executes the given <paramref name="action" /> if the <paramref name="maybe" /> has a value
        /// </summary>
        /// <param name="maybe"></param>
        /// <param name="action"></param>
        /// <typeparam name="T"></typeparam>
        public static void Execute <T>(this Maybe <T> maybe, Action <T> action)
        {
            if (maybe.HasNoValue)
            {
                return;
            }

            action(maybe.GetValueOrThrow());
        }
Ejemplo n.º 13
0
 public static void Match <T>(this Maybe <T> maybe, Action <T> Some, Action None)
 {
     if (maybe.HasValue)
     {
         Some(maybe.GetValueOrThrow());
     }
     else
     {
         None();
     }
 }
        public static async Task <Maybe <T> > Where <T>(this Maybe <T> maybe, Func <T, Task <bool> > predicate)
        {
            if (maybe.HasNoValue)
            {
                return(Maybe <T> .None);
            }

            if (await predicate(maybe.GetValueOrThrow()).DefaultAwait())
            {
                return(maybe);
            }

            return(Maybe <T> .None);
        }
Ejemplo n.º 15
0
        public static Maybe <T> Where <T>(this Maybe <T> maybe, Func <T, bool> predicate)
        {
            if (maybe.HasNoValue)
            {
                return(Maybe <T> .None);
            }

            if (predicate(maybe.GetValueOrThrow()))
            {
                return(maybe);
            }

            return(Maybe <T> .None);
        }
Ejemplo n.º 16
0
 public static TE Match <TE, TKey, TValue>(this Maybe <KeyValuePair <TKey, TValue> > maybe, Func <TKey, TValue, TE> Some, Func <TE> None) =>
 maybe.HasValue ? Some.Invoke(maybe.GetValueOrThrow().Key, maybe.GetValueOrThrow().Value) : None.Invoke();
Ejemplo n.º 17
0
 public static TE Match <TE, T>(this Maybe <T> maybe, Func <T, TE> Some, Func <TE> None)
 {
     return(maybe.HasValue
         ? Some(maybe.GetValueOrThrow())
         : None());
 }