using System;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Terminal.Gui {
///
/// for .
///
internal class TrueColorJsonConverter : JsonConverter {
private static TrueColorJsonConverter instance;
///
/// Singleton
///
public static TrueColorJsonConverter Instance {
get {
if (instance == null) {
instance = new TrueColorJsonConverter ();
}
return instance;
}
}
public override TrueColor Read (ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
// Check if the value is a string
if (reader.TokenType == JsonTokenType.String) {
// Get the color string
var colorString = reader.GetString ();
if (!TrueColor.TryParse (colorString, out TrueColor? trueColor)) {
throw new JsonException ($"Invalid TrueColor: '{colorString}'");
}
return trueColor.Value;
} else {
throw new JsonException ($"Unexpected token when parsing TrueColor: {reader.TokenType}");
}
}
public override void Write (Utf8JsonWriter writer, TrueColor value, JsonSerializerOptions options)
{
writer.WriteStringValue (value.ToString ());
}
}
}