From d651c4ad1ceeb0b8ac322cb9a7d824cfc846f864 Mon Sep 17 00:00:00 2001 From: Tau <4602612+bash@users.noreply.github.com> Date: Mon, 20 Nov 2023 21:42:11 +0100 Subject: [PATCH] Add generic parse method for IUtf8SpanParsable --- FrameworkFeatureConstants.props | 2 +- .../ParseExtensions.GenericParseable.cs | 12 ++++++++++-- Funcky/PublicAPI.Unshipped.txt | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/FrameworkFeatureConstants.props b/FrameworkFeatureConstants.props index cd17d346..15a19520 100644 --- a/FrameworkFeatureConstants.props +++ b/FrameworkFeatureConstants.props @@ -16,6 +16,6 @@ $(DefineConstants);GENERIC_MATH;GENERIC_PARSEABLE - $(DefineConstants);RANDOM_SHUFFLE + $(DefineConstants);RANDOM_SHUFFLE;UTF8_SPAN_PARSEABLE diff --git a/Funcky/Extensions/ParseExtensions/ParseExtensions.GenericParseable.cs b/Funcky/Extensions/ParseExtensions/ParseExtensions.GenericParseable.cs index d8cb3572..63a370da 100644 --- a/Funcky/Extensions/ParseExtensions/ParseExtensions.GenericParseable.cs +++ b/Funcky/Extensions/ParseExtensions/ParseExtensions.GenericParseable.cs @@ -1,8 +1,8 @@ -#if GENERIC_PARSEABLE namespace Funcky.Extensions; public static partial class ParseExtensions { +#if GENERIC_PARSEABLE public static Option ParseOrNone(this ReadOnlySpan value, IFormatProvider? provider) where TParseable : ISpanParsable => TParseable.TryParse(value, provider, out var result) @@ -14,5 +14,13 @@ public static Option ParseOrNone(this string? value, IFo => TParseable.TryParse(value, provider, out var result) ? result : Option.None; -} #endif + +#if UTF8_SPAN_PARSEABLE + public static Option ParseOrNone(this ReadOnlySpan utf8Text, IFormatProvider? provider) + where TParseable : IUtf8SpanParsable + => TParseable.TryParse(utf8Text, provider, out var result) + ? result + : Option.None; +#endif +} diff --git a/Funcky/PublicAPI.Unshipped.txt b/Funcky/PublicAPI.Unshipped.txt index 017dcdb7..7c28104c 100644 --- a/Funcky/PublicAPI.Unshipped.txt +++ b/Funcky/PublicAPI.Unshipped.txt @@ -33,6 +33,7 @@ static Funcky.Extensions.ParseExtensions.ParseNumberOrNone(this string! static Funcky.Extensions.ParseExtensions.ParseNumberOrNone(this System.ReadOnlySpan value, System.Globalization.NumberStyles style, System.IFormatProvider? provider) -> Funcky.Monads.Option static Funcky.Extensions.ParseExtensions.ParseOrNone(this string? value, System.IFormatProvider? provider) -> Funcky.Monads.Option static Funcky.Extensions.ParseExtensions.ParseOrNone(this System.ReadOnlySpan value, System.IFormatProvider? provider) -> Funcky.Monads.Option +static Funcky.Extensions.ParseExtensions.ParseOrNone(this System.ReadOnlySpan utf8Text, System.IFormatProvider? provider) -> Funcky.Monads.Option static Funcky.Extensions.ParseExtensions.ParseSByteOrNone(this System.ReadOnlySpan candidate, System.Globalization.NumberStyles style, System.IFormatProvider? provider) -> Funcky.Monads.Option static Funcky.Extensions.ParseExtensions.ParseSByteOrNone(this System.ReadOnlySpan candidate, System.IFormatProvider? provider) -> Funcky.Monads.Option static Funcky.Extensions.ParseExtensions.ParseSByteOrNone(this System.ReadOnlySpan candidate) -> Funcky.Monads.Option