Skip to content

Commit

Permalink
Merge pull request #780 from polyadic/add-parse-char-or-none
Browse files Browse the repository at this point in the history
Add missing ParseExtensions.ParseCharOrNone
  • Loading branch information
FreeApophis authored Jan 30, 2024
2 parents d4c3060 + 61f4be9 commit f1c3169
Show file tree
Hide file tree
Showing 14 changed files with 46 additions and 30 deletions.
24 changes: 24 additions & 0 deletions Funcky.Test/Extensions/ParseExtensions/ParseExtensionsTest.Char.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
namespace Funcky.Test.Extensions.ParseExtensions;

public sealed partial class ParseExtensionsTest
{
[Theory]
[InlineData('a', "a")]
[InlineData('x', "x")]
[InlineData('1', "1")]
[InlineData('δ', "δ")]
public void ParseCharOrNoneReturnsTheOnlyCharacterInAString(char expected, string input)
{
FunctionalAssert.Some(expected, input.ParseCharOrNone());
}

[Theory]
[InlineData(null)]
[InlineData("longer")]
[InlineData("")]
[InlineData("\ud83d\udd25")] // single fire emoji (outside BMP)
public void ParseCharOrNoneReturnsNoneIfItCanParseItToACharcter(string? input)
{
FunctionalAssert.None(input.ParseCharOrNone());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@
namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(BigInteger), nameof(BigInteger.TryParse))]
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
6 changes: 6 additions & 0 deletions Funcky/Extensions/ParseExtensions/ParseExtensions.Boolean.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
using Funcky.Internal;

namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(bool), nameof(bool.TryParse))]
public static partial class ParseExtensions;
6 changes: 6 additions & 0 deletions Funcky/Extensions/ParseExtensions/ParseExtensions.Char.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
using Funcky.Internal;

namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(char), nameof(char.TryParse))]
public static partial class ParseExtensions;
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,5 @@ namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(DateOnly), nameof(DateOnly.TryParse))]
[OrNoneFromTryPattern(typeof(DateOnly), nameof(DateOnly.TryParseExact))]
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@ namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(DateTime), nameof(DateTime.TryParse))]
[OrNoneFromTryPattern(typeof(DateTime), nameof(DateTime.TryParseExact))]
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@ namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(DateTimeOffset), nameof(DateTimeOffset.TryParse))]
[OrNoneFromTryPattern(typeof(DateTimeOffset), nameof(DateTimeOffset.TryParseExact))]
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
using Funcky.Internal;

namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(bool), nameof(bool.TryParse))]
public static partial class ParseExtensions
{
[Pure]
Expand Down
4 changes: 1 addition & 3 deletions Funcky/Extensions/ParseExtensions/ParseExtensions.Guid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@ namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(Guid), nameof(Guid.TryParse))]
[OrNoneFromTryPattern(typeof(Guid), nameof(Guid.TryParseExact))]
public partial class ParseExtensions
{
}
public static partial class ParseExtensions;
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,4 @@ namespace Funcky.Extensions;
#if IP_END_POINT_TRY_PARSE_SUPPORTED
[OrNoneFromTryPattern(typeof(IPEndPoint), nameof(IPEndPoint.TryParse))]
#endif
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
4 changes: 1 addition & 3 deletions Funcky/Extensions/ParseExtensions/ParseExtensions.Numbers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,4 @@ namespace Funcky.Extensions;
[OrNoneFromTryPattern(typeof(float), nameof(float.TryParse))]
[OrNoneFromTryPattern(typeof(double), nameof(double.TryParse))]
[OrNoneFromTryPattern(typeof(decimal), nameof(decimal.TryParse))]
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@ namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(TimeSpan), nameof(TimeSpan.TryParse))]
[OrNoneFromTryPattern(typeof(TimeSpan), nameof(TimeSpan.TryParseExact))]
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
4 changes: 1 addition & 3 deletions Funcky/Extensions/ParseExtensions/ParseExtensions.Version.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@
namespace Funcky.Extensions;

[OrNoneFromTryPattern(typeof(Version), nameof(Version.TryParse))]
public static partial class ParseExtensions
{
}
public static partial class ParseExtensions;
1 change: 1 addition & 0 deletions Funcky/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ static Funcky.Extensions.EnumeratorExtensions.MoveNextOrNone<T>(this System.Coll
static Funcky.Extensions.ParseExtensions.ParseByteOrNone(this System.ReadOnlySpan<byte> candidate, System.Globalization.NumberStyles style, System.IFormatProvider? provider) -> Funcky.Monads.Option<byte>
static Funcky.Extensions.ParseExtensions.ParseByteOrNone(this System.ReadOnlySpan<byte> candidate, System.IFormatProvider? provider) -> Funcky.Monads.Option<byte>
static Funcky.Extensions.ParseExtensions.ParseByteOrNone(this System.ReadOnlySpan<byte> candidate) -> Funcky.Monads.Option<byte>
static Funcky.Extensions.ParseExtensions.ParseCharOrNone(this string? candidate) -> Funcky.Monads.Option<char>
static Funcky.Extensions.ParseExtensions.ParseDecimalOrNone(this System.ReadOnlySpan<byte> candidate, System.Globalization.NumberStyles style, System.IFormatProvider? provider) -> Funcky.Monads.Option<decimal>
static Funcky.Extensions.ParseExtensions.ParseDecimalOrNone(this System.ReadOnlySpan<byte> candidate, System.IFormatProvider? provider) -> Funcky.Monads.Option<decimal>
static Funcky.Extensions.ParseExtensions.ParseDecimalOrNone(this System.ReadOnlySpan<byte> candidate) -> Funcky.Monads.Option<decimal>
Expand Down

0 comments on commit f1c3169

Please sign in to comment.