diff --git a/appveyor.yml b/appveyor.yml
index dc799e7..1c6cd8a 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -4,4 +4,13 @@ build_script:
- ps: .\build.ps1
test: off
artifacts:
-- path: 'src\**\*.nupkg'
\ No newline at end of file
+- path: 'src\**\*.nupkg'
+deploy:
+ - provider: NuGet
+ on:
+ branch: master
+ APPVEYOR_REPO_TAG: true
+ symbol_server: https://ci.appveyor.com/nuget/josdeweger-7u3d88pyya90/api/v2/package
+ api_key:
+ secure: d1CMBHpVrKHJOZxYueO4x/ROshtrPzJ8vPqKjxCT0NI=
+ artifact: /.*\.symbols\.nupkg/
\ No newline at end of file
diff --git a/src/Common.props b/src/Common.props
index 297935f..32af634 100644
--- a/src/Common.props
+++ b/src/Common.props
@@ -1,5 +1,5 @@
- 2.3.0
+ 2.4.0
diff --git a/src/SheetToObjects.Core/MaybeExtensions.cs b/src/SheetToObjects.Core/MaybeExtensions.cs
new file mode 100644
index 0000000..33c3617
--- /dev/null
+++ b/src/SheetToObjects.Core/MaybeExtensions.cs
@@ -0,0 +1,24 @@
+using System;
+using CSharpFunctionalExtensions;
+
+namespace SheetToObjects.Core
+{
+ internal static class MaybeExtensions
+ {
+ public static Maybe OnEmpty(this Maybe maybe, Func resultFunc)
+ {
+ if(maybe.HasNoValue)
+ return Maybe.From(resultFunc());
+
+ return maybe;
+ }
+
+ public static Maybe OnValue(this Maybe maybe, Func resultFunc)
+ {
+ if(maybe.HasNoValue)
+ return Maybe.None;
+
+ return Maybe.From(resultFunc(maybe.Value));
+ }
+ }
+}
diff --git a/src/SheetToObjects.Core/SheetToObjects.Core.csproj b/src/SheetToObjects.Core/SheetToObjects.Core.csproj
index 60615a5..f196f4a 100644
--- a/src/SheetToObjects.Core/SheetToObjects.Core.csproj
+++ b/src/SheetToObjects.Core/SheetToObjects.Core.csproj
@@ -13,8 +13,8 @@
true
https://github.com/josdeweger/SheetToObjects
-
+
diff --git a/src/SheetToObjects.Lib/Extensions/ResultExtensions.cs b/src/SheetToObjects.Lib/Extensions/ResultExtensions.cs
new file mode 100644
index 0000000..7be47d8
--- /dev/null
+++ b/src/SheetToObjects.Lib/Extensions/ResultExtensions.cs
@@ -0,0 +1,26 @@
+using System;
+using CSharpFunctionalExtensions;
+
+namespace SheetToObjects.Lib.Extensions
+{
+ internal static class ResultExtensions
+ {
+ public static Result OnValidationSuccess(this Result result, Func func)
+ where TError : class
+ {
+ if (result.IsSuccess)
+ return Result.Ok(func(result.Value));
+
+ return Result.Fail(result.Error);
+ }
+
+ public static Result OnValidationFailure(this Result result, Func func)
+ where TError : class
+ {
+ if (result.IsFailure)
+ return Result.Fail(func(result.Error));
+
+ return Result.Ok(result.Value);
+ }
+ }
+}
diff --git a/src/SheetToObjects.Lib/IMapRow.cs b/src/SheetToObjects.Lib/IMapRow.cs
index 6ee43f0..149e6af 100644
--- a/src/SheetToObjects.Lib/IMapRow.cs
+++ b/src/SheetToObjects.Lib/IMapRow.cs
@@ -7,7 +7,7 @@ namespace SheetToObjects.Lib
{
public interface IMapRow
{
- Result, List> Map(Row row, MappingConfig mappingConfig)
+ Result, List> Map(Row row, MappingConfig mappingConfig)
where TModel : new();
}
}
\ No newline at end of file
diff --git a/src/SheetToObjects.Lib/IMapValue.cs b/src/SheetToObjects.Lib/IMapValue.cs
index 7919e37..345a336 100644
--- a/src/SheetToObjects.Lib/IMapValue.cs
+++ b/src/SheetToObjects.Lib/IMapValue.cs
@@ -10,7 +10,6 @@ internal interface IMapValue
Result