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