mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-07-17 02:52:55 +01:00
This isn't actually how you write nulls in YamlDotNet
This commit is contained in:
@@ -8,7 +8,7 @@ using YamlDotNet.Serialization;
|
||||
namespace Tgstation.Server.Host.Extensions.Converters
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="JsonConverter"/> and <see cref="IYamlTypeConverter"/> for serializing <see cref="global::System.Version"/>s for BYOND.
|
||||
/// <see cref="JsonConverter"/> and <see cref="IYamlTypeConverter"/> for serializing <see cref="global::System.Version"/>s in semver format.
|
||||
/// </summary>
|
||||
sealed class VersionConverter : JsonConverter, IYamlTypeConverter
|
||||
{
|
||||
@@ -82,19 +82,7 @@ namespace Tgstation.Server.Host.Extensions.Converters
|
||||
public bool Accepts(Type type) => CheckSupportsType(type, false);
|
||||
|
||||
/// <inheritdoc />
|
||||
public object ReadYaml(IParser parser, Type type)
|
||||
{
|
||||
if (parser == null)
|
||||
throw new ArgumentNullException(nameof(parser));
|
||||
|
||||
CheckSupportsType(type, true);
|
||||
|
||||
var scalar = parser.Consume<Scalar>();
|
||||
if (scalar == null)
|
||||
return null;
|
||||
|
||||
return global::System.Version.Parse(scalar.Value);
|
||||
}
|
||||
public object ReadYaml(IParser parser, Type type) => throw new NotSupportedException("Deserialization not supported!"); // The default implementation is fine at handling this
|
||||
|
||||
/// <inheritdoc />
|
||||
public void WriteYaml(IEmitter emitter, object value, Type type)
|
||||
@@ -104,11 +92,14 @@ namespace Tgstation.Server.Host.Extensions.Converters
|
||||
|
||||
CheckSupportsType(type, true);
|
||||
|
||||
if (value == null)
|
||||
throw new NotSupportedException("Null values not supported!");
|
||||
|
||||
var version = (global::System.Version)value;
|
||||
emitter.Emit(
|
||||
new Scalar(
|
||||
version
|
||||
?.Semver()
|
||||
.Semver()
|
||||
.ToString()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,16 +37,5 @@ namespace Tgstation.Server.Host.Extensions.Converters.Tests
|
||||
|
||||
Assert.AreEqual(testYaml, serializedString.Trim());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestYamlDeserialization()
|
||||
{
|
||||
var deserialized = new DeserializerBuilder()
|
||||
.WithTypeConverter(new VersionConverter())
|
||||
.Build()
|
||||
.Deserialize<TestObject>(testYaml);
|
||||
|
||||
Assert.AreEqual(testVersion, deserialized.Version);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user