You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

20 lines
735 B

  1. #nullable enable
  2. using System;
  3. using System.Runtime.Remoting.Messaging;
  4. using Hive.Versioning;
  5. using Newtonsoft.Json;
  6. namespace IPA.JsonConverters
  7. {
  8. internal class SemverRangeConverter : JsonConverter<VersionRange?>
  9. {
  10. public override VersionRange? ReadJson(JsonReader reader, Type objectType, VersionRange? existingValue, bool hasExistingValue, JsonSerializer serializer)
  11. => reader.Value is not string s ? existingValue : new VersionRange(s);
  12. public override void WriteJson(JsonWriter writer, VersionRange? value, JsonSerializer serializer)
  13. {
  14. if (value is null) writer.WriteNull();
  15. else writer.WriteValue(value.ToString());
  16. }
  17. }
  18. }