plugin ui
All checks were successful
Build / Compute Version (push) Successful in 17s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 3m5s
Build / Build Nuget package (NuGet) (push) Successful in 2m34s
Build / Build Nuget package (CringePlugins) (push) Successful in 2m56s
Build / Build Nuget package (SharedCringe) (push) Successful in 1m52s
Build / Build Launcher (push) Successful in 3m52s

This commit is contained in:
zznty
2024-11-03 01:58:04 +07:00
parent 271e8a1dde
commit aac79af331
22 changed files with 573 additions and 40 deletions

View File

@@ -0,0 +1,48 @@
using System.Collections.Immutable;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace NuGet.Converters;
public class StringOrStringArrayConverter : JsonConverter<ImmutableArray<string>>
{
public override ImmutableArray<string> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
switch (reader.TokenType)
{
case JsonTokenType.String:
return [reader.GetString()!];
case JsonTokenType.StartArray:
{
var builder = ImmutableArray.CreateBuilder<string>();
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
{
builder.Add(reader.GetString()!);
}
return builder.ToImmutable();
}
default:
throw new JsonException("String or array of strings expected");
}
}
public override void Write(Utf8JsonWriter writer, ImmutableArray<string> value, JsonSerializerOptions options)
{
if (value.Length == 1)
{
writer.WriteStringValue(value[0]);
return;
}
writer.WriteStartArray();
foreach (var author in value)
{
writer.WriteStringValue(author);
}
writer.WriteEndArray();
}
}