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); + } +}