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