diff --git a/src/CommandLine/ParserResultExtensions.cs b/src/CommandLine/ParserResultExtensions.cs index c1bd35a7..d551bc29 100644 --- a/src/CommandLine/ParserResultExtensions.cs +++ b/src/CommandLine/ParserResultExtensions.cs @@ -143,6 +143,26 @@ public static TResult MapResult(this ParserResult res return notParsedFunc(((NotParsed)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// Type of the target instance built with parsed value. + /// The type of the new value. + /// An instance. + /// Async lambda executed on successful parsing. + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + return parsedFunc(parsed.Value); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -168,6 +188,30 @@ public static TResult MapResult(this ParserResult result, return notParsedFunc(((NotParsed)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1) + { + return parsedFunc1((T1)parsed.Value); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -200,6 +244,37 @@ public static TResult MapResult(this ParserResult resul return notParsedFunc(((NotParsed)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1) + { + return parsedFunc1((T1)parsed.Value); + } + if (parsed.Value is T2) + { + return parsedFunc2((T2)parsed.Value); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -239,6 +314,44 @@ public static TResult MapResult(this ParserResult r return notParsedFunc(((NotParsed)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -285,6 +398,51 @@ public static TResult MapResult(this ParserResult)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -338,6 +496,58 @@ public static TResult MapResult(this ParserResult)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -398,6 +608,65 @@ public static TResult MapResult(this ParserResu return notParsedFunc(((NotParsed)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -465,6 +734,72 @@ public static TResult MapResult(this Parser return notParsedFunc(((NotParsed)result).Errors); } + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) + { + return parsedFunc7(t7); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -540,7 +875,7 @@ public static TResult MapResult(this Pa } /// - /// Provides a way to transform result data into another value. + /// Provides a way to asynchronously transform result data into another value. /// /// First verb type. /// Second verb type. @@ -550,70 +885,62 @@ public static TResult MapResult(this Pa /// Sixth verb type. /// Seventh verb type. /// Eighth verb type. - /// Ninth verb type. /// /// The result in verb scenario. - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on failed parsing. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. /// The new value. - public static TResult MapResult(this ParserResult result, - Func parsedFunc1, - Func parsedFunc2, - Func parsedFunc3, - Func parsedFunc4, - Func parsedFunc5, - Func parsedFunc6, - Func parsedFunc7, - Func parsedFunc8, - Func parsedFunc9, - Func, TResult> notParsedFunc) + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func, Task> notParsedFunc) { - var parsed = result as Parsed; - if (parsed != null) + if (result is Parsed parsed) { - if (parsed.Value is T1) - { - return parsedFunc1((T1)parsed.Value); - } - if (parsed.Value is T2) + if (parsed.Value is T1 t1) { - return parsedFunc2((T2)parsed.Value); + return parsedFunc1(t1); } - if (parsed.Value is T3) + if (parsed.Value is T2 t2) { - return parsedFunc3((T3)parsed.Value); + return parsedFunc2(t2); } - if (parsed.Value is T4) + if (parsed.Value is T3 t3) { - return parsedFunc4((T4)parsed.Value); + return parsedFunc3(t3); } - if (parsed.Value is T5) + if (parsed.Value is T4 t4) { - return parsedFunc5((T5)parsed.Value); + return parsedFunc4(t4); } - if (parsed.Value is T6) + if (parsed.Value is T5 t5) { - return parsedFunc6((T6)parsed.Value); + return parsedFunc5(t5); } - if (parsed.Value is T7) + if (parsed.Value is T6 t6) { - return parsedFunc7((T7)parsed.Value); + return parsedFunc6(t6); } - if (parsed.Value is T8) + if (parsed.Value is T7 t7) { - return parsedFunc8((T8)parsed.Value); + return parsedFunc7(t7); } - if (parsed.Value is T9) + if (parsed.Value is T8 t8) { - return parsedFunc9((T9)parsed.Value); + return parsedFunc8(t8); } throw new InvalidOperationException(); } @@ -632,7 +959,6 @@ public static TResult MapResult(thi /// Seventh verb type. /// Eighth verb type. /// Ninth verb type. - /// Tenth verb type. /// /// The result in verb scenario. /// Lambda executed on successful parsing of . @@ -644,10 +970,9 @@ public static TResult MapResult(thi /// Lambda executed on successful parsing of . /// Lambda executed on successful parsing of . /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . /// Lambda executed on failed parsing. /// The new value. - public static TResult MapResult(this ParserResult result, + public static TResult MapResult(this ParserResult result, Func parsedFunc1, Func parsedFunc2, Func parsedFunc3, @@ -657,7 +982,6 @@ public static TResult MapResult parsedFunc7, Func parsedFunc8, Func parsedFunc9, - Func parsedFunc10, Func, TResult> notParsedFunc) { var parsed = result as Parsed; @@ -699,17 +1023,13 @@ public static TResult MapResult)result).Errors); } /// - /// Provides a way to transform result data into another value. + /// Provides a way to asynchronously transform result data into another value. /// /// First verb type. /// Second verb type. @@ -720,14 +1040,269 @@ public static TResult MapResultSeventh verb type. /// Eighth verb type. /// Ninth verb type. - /// Tenth verb type. - /// Eleventh verb type. /// /// The result in verb scenario. - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) + { + return parsedFunc7(t7); + } + if (parsed.Value is T8 t8) + { + return parsedFunc8(t8); + } + if (parsed.Value is T9 t9) + { + return parsedFunc9(t9); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + + /// + /// Provides a way to transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// + /// The result in verb scenario. + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on failed parsing. + /// The new value. + public static TResult MapResult(this ParserResult result, + Func parsedFunc1, + Func parsedFunc2, + Func parsedFunc3, + Func parsedFunc4, + Func parsedFunc5, + Func parsedFunc6, + Func parsedFunc7, + Func parsedFunc8, + Func parsedFunc9, + Func parsedFunc10, + Func, TResult> notParsedFunc) + { + var parsed = result as Parsed; + if (parsed != null) + { + if (parsed.Value is T1) + { + return parsedFunc1((T1)parsed.Value); + } + if (parsed.Value is T2) + { + return parsedFunc2((T2)parsed.Value); + } + if (parsed.Value is T3) + { + return parsedFunc3((T3)parsed.Value); + } + if (parsed.Value is T4) + { + return parsedFunc4((T4)parsed.Value); + } + if (parsed.Value is T5) + { + return parsedFunc5((T5)parsed.Value); + } + if (parsed.Value is T6) + { + return parsedFunc6((T6)parsed.Value); + } + if (parsed.Value is T7) + { + return parsedFunc7((T7)parsed.Value); + } + if (parsed.Value is T8) + { + return parsedFunc8((T8)parsed.Value); + } + if (parsed.Value is T9) + { + return parsedFunc9((T9)parsed.Value); + } + if (parsed.Value is T10) + { + return parsedFunc10((T10)parsed.Value); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func> parsedFunc10, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) + { + return parsedFunc7(t7); + } + if (parsed.Value is T8 t8) + { + return parsedFunc8(t8); + } + if (parsed.Value is T9 t9) + { + return parsedFunc9(t9); + } + if (parsed.Value is T10 t10) + { + return parsedFunc10(t10); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + + /// + /// Provides a way to transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// Eleventh verb type. + /// + /// The result in verb scenario. + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . /// Lambda executed on successful parsing of . /// Lambda executed on successful parsing of . /// Lambda executed on successful parsing of . @@ -774,29 +1349,326 @@ public static TResult MapResult)result).Errors); + } + + /// + /// Provides a way to asynchronously transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// Eleventh verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func> parsedFunc10, + Func> parsedFunc11, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) + { + return parsedFunc7(t7); + } + if (parsed.Value is T8 t8) + { + return parsedFunc8(t8); + } + if (parsed.Value is T9 t9) + { + return parsedFunc9(t9); + } + if (parsed.Value is T10 t10) + { + return parsedFunc10(t10); + } + if (parsed.Value is T11 t11) + { + return parsedFunc11(t11); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + + /// + /// Provides a way to transform result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// Eleventh verb type. + /// Twelfth verb type. + /// + /// The result in verb scenario. + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . + /// Lambda executed on failed parsing. + /// The new value. + public static TResult MapResult(this ParserResult result, + Func parsedFunc1, + Func parsedFunc2, + Func parsedFunc3, + Func parsedFunc4, + Func parsedFunc5, + Func parsedFunc6, + Func parsedFunc7, + Func parsedFunc8, + Func parsedFunc9, + Func parsedFunc10, + Func parsedFunc11, + Func parsedFunc12, + Func, TResult> notParsedFunc) + { + var parsed = result as Parsed; + if (parsed != null) + { + if (parsed.Value is T1) + { + return parsedFunc1((T1)parsed.Value); + } + if (parsed.Value is T2) + { + return parsedFunc2((T2)parsed.Value); + } + if (parsed.Value is T3) + { + return parsedFunc3((T3)parsed.Value); + } + if (parsed.Value is T4) + { + return parsedFunc4((T4)parsed.Value); + } + if (parsed.Value is T5) + { + return parsedFunc5((T5)parsed.Value); + } + if (parsed.Value is T6) + { + return parsedFunc6((T6)parsed.Value); + } + if (parsed.Value is T7) + { + return parsedFunc7((T7)parsed.Value); + } + if (parsed.Value is T8) + { + return parsedFunc8((T8)parsed.Value); + } + if (parsed.Value is T9) + { + return parsedFunc9((T9)parsed.Value); + } + if (parsed.Value is T10) + { + return parsedFunc10((T10)parsed.Value); + } + if (parsed.Value is T11) + { + return parsedFunc11((T11)parsed.Value); + } + if (parsed.Value is T12) + { + return parsedFunc12((T12)parsed.Value); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + + /// + /// Provides a way to asynchronously result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// Eleventh verb type. + /// Twelfth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func> parsedFunc10, + Func> parsedFunc11, + Func> parsedFunc12, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) { - return parsedFunc6((T6)parsed.Value); + return parsedFunc7(t7); } - if (parsed.Value is T7) + if (parsed.Value is T8 t8) { - return parsedFunc7((T7)parsed.Value); + return parsedFunc8(t8); } - if (parsed.Value is T8) + if (parsed.Value is T9 t9) { - return parsedFunc8((T8)parsed.Value); + return parsedFunc9(t9); } - if (parsed.Value is T9) + if (parsed.Value is T10 t10) { - return parsedFunc9((T9)parsed.Value); + return parsedFunc10(t10); } - if (parsed.Value is T10) + if (parsed.Value is T11 t11) { - return parsedFunc10((T10)parsed.Value); + return parsedFunc11(t11); } - if (parsed.Value is T11) + if (parsed.Value is T12 t12) { - return parsedFunc11((T11)parsed.Value); + return parsedFunc12(t12); } throw new InvalidOperationException(); } @@ -818,6 +1690,7 @@ public static TResult MapResultTenth verb type. /// Eleventh verb type. /// Twelfth verb type. + /// Thirteenth verb type. /// /// The result in verb scenario. /// Lambda executed on successful parsing of . @@ -832,9 +1705,10 @@ public static TResult MapResultLambda executed on successful parsing of . /// Lambda executed on successful parsing of . /// Lambda executed on successful parsing of . + /// Lambda executed on successful parsing of . /// Lambda executed on failed parsing. /// The new value. - public static TResult MapResult(this ParserResult result, + public static TResult MapResult(this ParserResult result, Func parsedFunc1, Func parsedFunc2, Func parsedFunc3, @@ -847,6 +1721,7 @@ public static TResult MapResult parsedFunc10, Func parsedFunc11, Func parsedFunc12, + Func parsedFunc13, Func, TResult> notParsedFunc) { var parsed = result as Parsed; @@ -900,13 +1775,17 @@ public static TResult MapResult)result).Errors); } /// - /// Provides a way to transform result data into another value. + /// Provides a way to asynchronously result data into another value. /// /// First verb type. /// Second verb type. @@ -923,97 +1802,95 @@ public static TResult MapResultThirteenth verb type. /// /// The result in verb scenario. - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on successful parsing of . - /// Lambda executed on failed parsing. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. /// The new value. - public static TResult MapResult(this ParserResult result, - Func parsedFunc1, - Func parsedFunc2, - Func parsedFunc3, - Func parsedFunc4, - Func parsedFunc5, - Func parsedFunc6, - Func parsedFunc7, - Func parsedFunc8, - Func parsedFunc9, - Func parsedFunc10, - Func parsedFunc11, - Func parsedFunc12, - Func parsedFunc13, - Func, TResult> notParsedFunc) + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func> parsedFunc10, + Func> parsedFunc11, + Func> parsedFunc12, + Func> parsedFunc13, + Func, Task> notParsedFunc) { - var parsed = result as Parsed; - if (parsed != null) + if (result is Parsed parsed) { - if (parsed.Value is T1) + if (parsed.Value is T1 t1) { - return parsedFunc1((T1)parsed.Value); + return parsedFunc1(t1); } - if (parsed.Value is T2) + if (parsed.Value is T2 t2) { - return parsedFunc2((T2)parsed.Value); + return parsedFunc2(t2); } - if (parsed.Value is T3) + if (parsed.Value is T3 t3) { - return parsedFunc3((T3)parsed.Value); + return parsedFunc3(t3); } - if (parsed.Value is T4) + if (parsed.Value is T4 t4) { - return parsedFunc4((T4)parsed.Value); + return parsedFunc4(t4); } - if (parsed.Value is T5) + if (parsed.Value is T5 t5) { - return parsedFunc5((T5)parsed.Value); + return parsedFunc5(t5); } - if (parsed.Value is T6) + if (parsed.Value is T6 t6) { - return parsedFunc6((T6)parsed.Value); + return parsedFunc6(t6); } - if (parsed.Value is T7) + if (parsed.Value is T7 t7) { - return parsedFunc7((T7)parsed.Value); + return parsedFunc7(t7); } - if (parsed.Value is T8) + if (parsed.Value is T8 t8) { - return parsedFunc8((T8)parsed.Value); + return parsedFunc8(t8); } - if (parsed.Value is T9) + if (parsed.Value is T9 t9) { - return parsedFunc9((T9)parsed.Value); + return parsedFunc9(t9); } - if (parsed.Value is T10) + if (parsed.Value is T10 t10) { - return parsedFunc10((T10)parsed.Value); + return parsedFunc10(t10); } - if (parsed.Value is T11) + if (parsed.Value is T11 t11) { - return parsedFunc11((T11)parsed.Value); + return parsedFunc11(t11); } - if (parsed.Value is T12) + if (parsed.Value is T12 t12) { - return parsedFunc12((T12)parsed.Value); + return parsedFunc12(t12); } - if (parsed.Value is T13) + if (parsed.Value is T13 t13) { - return parsedFunc13((T13)parsed.Value); + return parsedFunc13(t13); } throw new InvalidOperationException(); } return notParsedFunc(((NotParsed)result).Errors); } - /// /// Provides a way to transform result data into another value. /// @@ -1130,6 +2007,121 @@ public static TResult MapResult)result).Errors); } + /// + /// Provides a way to asynchronously result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// Eleventh verb type. + /// Twelfth verb type. + /// Thirteenth verb type. + /// Fourteenth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func> parsedFunc10, + Func> parsedFunc11, + Func> parsedFunc12, + Func> parsedFunc13, + Func> parsedFunc14, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) + { + return parsedFunc7(t7); + } + if (parsed.Value is T8 t8) + { + return parsedFunc8(t8); + } + if (parsed.Value is T9 t9) + { + return parsedFunc9(t9); + } + if (parsed.Value is T10 t10) + { + return parsedFunc10(t10); + } + if (parsed.Value is T11 t11) + { + return parsedFunc11(t11); + } + if (parsed.Value is T12 t12) + { + return parsedFunc12(t12); + } + if (parsed.Value is T13 t13) + { + return parsedFunc13(t13); + } + if (parsed.Value is T14 t14) + { + return parsedFunc14(t14); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -1253,6 +2245,128 @@ public static TResult MapResult)result).Errors); } + /// + /// Provides a way to asynchronously result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// Eleventh verb type. + /// Twelfth verb type. + /// Thirteenth verb type. + /// Fourteenth verb type. + /// Fifteenth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func> parsedFunc10, + Func> parsedFunc11, + Func> parsedFunc12, + Func> parsedFunc13, + Func> parsedFunc14, + Func> parsedFunc15, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) + { + return parsedFunc7(t7); + } + if (parsed.Value is T8 t8) + { + return parsedFunc8(t8); + } + if (parsed.Value is T9 t9) + { + return parsedFunc9(t9); + } + if (parsed.Value is T10 t10) + { + return parsedFunc10(t10); + } + if (parsed.Value is T11 t11) + { + return parsedFunc11(t11); + } + if (parsed.Value is T12 t12) + { + return parsedFunc12(t12); + } + if (parsed.Value is T13 t13) + { + return parsedFunc13(t13); + } + if (parsed.Value is T14 t14) + { + return parsedFunc14(t14); + } + if (parsed.Value is T15 t15) + { + return parsedFunc15(t15); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + /// /// Provides a way to transform result data into another value. /// @@ -1382,5 +2496,135 @@ public static TResult MapResult)result).Errors); } + + /// + /// Provides a way to asynchronously result data into another value. + /// + /// First verb type. + /// Second verb type. + /// Third verb type. + /// Fourth verb type. + /// Fifth verb type. + /// Sixth verb type. + /// Seventh verb type. + /// Eighth verb type. + /// Ninth verb type. + /// Tenth verb type. + /// Eleventh verb type. + /// Twelfth verb type. + /// Thirteenth verb type. + /// Fourteenth verb type. + /// Fifteenth verb type. + /// Sixteenth verb type. + /// + /// The result in verb scenario. + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on successful parsing of . + /// Async lambda executed on failed parsing. + /// The new value. + public static Task MapResultAsync(this ParserResult result, + Func> parsedFunc1, + Func> parsedFunc2, + Func> parsedFunc3, + Func> parsedFunc4, + Func> parsedFunc5, + Func> parsedFunc6, + Func> parsedFunc7, + Func> parsedFunc8, + Func> parsedFunc9, + Func> parsedFunc10, + Func> parsedFunc11, + Func> parsedFunc12, + Func> parsedFunc13, + Func> parsedFunc14, + Func> parsedFunc15, + Func> parsedFunc16, + Func, Task> notParsedFunc) + { + if (result is Parsed parsed) + { + if (parsed.Value is T1 t1) + { + return parsedFunc1(t1); + } + if (parsed.Value is T2 t2) + { + return parsedFunc2(t2); + } + if (parsed.Value is T3 t3) + { + return parsedFunc3(t3); + } + if (parsed.Value is T4 t4) + { + return parsedFunc4(t4); + } + if (parsed.Value is T5 t5) + { + return parsedFunc5(t5); + } + if (parsed.Value is T6 t6) + { + return parsedFunc6(t6); + } + if (parsed.Value is T7 t7) + { + return parsedFunc7(t7); + } + if (parsed.Value is T8 t8) + { + return parsedFunc8(t8); + } + if (parsed.Value is T9 t9) + { + return parsedFunc9(t9); + } + if (parsed.Value is T10 t10) + { + return parsedFunc10(t10); + } + if (parsed.Value is T11 t11) + { + return parsedFunc11(t11); + } + if (parsed.Value is T12 t12) + { + return parsedFunc12(t12); + } + if (parsed.Value is T13 t13) + { + return parsedFunc13(t13); + } + if (parsed.Value is T14 t14) + { + return parsedFunc14(t14); + } + if (parsed.Value is T15 t15) + { + return parsedFunc15(t15); + } + if (parsed.Value is T16 t16) + { + return parsedFunc16(t16); + } + throw new InvalidOperationException(); + } + return notParsedFunc(((NotParsed)result).Errors); + } + } }