From 8ce9a12847c77835b98e81614b947592cb5c778e Mon Sep 17 00:00:00 2001 From: "Dylan R. E. Moonfire" Date: Mon, 18 Jul 2022 17:13:33 -0500 Subject: [PATCH] feat: added some YAML parsing methods --- .../NitrideYamlEntityExtensions.cs | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/Nitride.Yaml/NitrideYamlEntityExtensions.cs diff --git a/src/Nitride.Yaml/NitrideYamlEntityExtensions.cs b/src/Nitride.Yaml/NitrideYamlEntityExtensions.cs new file mode 100644 index 0000000..076ceef --- /dev/null +++ b/src/Nitride.Yaml/NitrideYamlEntityExtensions.cs @@ -0,0 +1,45 @@ +using System; + +using Gallium; + +using Nitride.Contents; + +using YamlDotNet.Serialization; + +namespace Nitride.Yaml; + +public static class NitrideYamlEntityExtensions +{ + /// + /// Parses the entity text as a YAML file and returns the results. + /// + public static TType? GetYaml( + this Entity entity, + Action? configure = null) + { + DeserializerBuilder builder = new(); + + configure?.Invoke(builder); + + IDeserializer deserializer = builder.Build(); + + return entity.GetYaml(deserializer); + } + + /// + /// Parses the entity text as a YAML file and returns the results. + /// + public static TType? GetYaml( + this Entity entity, + IDeserializer deserializer) + { + if (!entity.TryGet(out ITextContent content)) + { + return default; + } + + string text = content.GetText(); + + return deserializer.Deserialize(text); + } +}