Skip to content

Commit efd76b5

Browse files
authored
Use compiled Regex in InternalChatCompletionRequestMessageContentPartImageImageUrl (#32)
And source generated regex when the library eventually multitargets .NET 8
1 parent 1c40de6 commit efd76b5

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/Custom/Chat/Internal/InternalChatCompletionRequestMessageContentPartImageImageUrl.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ namespace OpenAI.Chat;
88
[CodeGenSuppress("InternalChatCompletionRequestMessageContentPartImageImageUrl", typeof(string))]
99
internal partial class InternalChatCompletionRequestMessageContentPartImageImageUrl
1010
{
11+
#if NET8_0_OR_GREATER
12+
[GeneratedRegex(@"^data:(?<type>.+?);base64,(?<data>.+)$")]
13+
private static partial Regex ParseDataUriRegex();
14+
#else
15+
private static Regex ParseDataUriRegex() => s_parseDataUriRegex;
16+
private static readonly Regex s_parseDataUriRegex = new(@"^data:(?<type>.+?);base64,(?<data>.+)$", RegexOptions.Compiled);
17+
#endif
18+
1119
private readonly Uri _imageUri = default;
1220
private readonly BinaryData _imageBytes = default;
1321
private readonly string _imageBytesMediaType = default;
@@ -47,7 +55,7 @@ public InternalChatCompletionRequestMessageContentPartImageImageUrl(BinaryData i
4755
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
4856
internal InternalChatCompletionRequestMessageContentPartImageImageUrl(string url, ImageChatMessageContentPartDetail? detail, IDictionary<string, BinaryData> serializedAdditionalRawData)
4957
{
50-
Match parsedDataUri = Regex.Match(url, @"^data:(?<type>.+?);base64,(?<data>.+)$");
58+
Match parsedDataUri = ParseDataUriRegex().Match(url);
5159

5260
if (parsedDataUri.Success)
5361
{

0 commit comments

Comments
 (0)