diff --git a/src/Nitride.Yaml/NitrideYamlEntityExtensions.cs b/src/Nitride.Yaml/NitrideYamlEntityExtensions.cs index 076ceef..a9840fa 100644 --- a/src/Nitride.Yaml/NitrideYamlEntityExtensions.cs +++ b/src/Nitride.Yaml/NitrideYamlEntityExtensions.cs @@ -33,13 +33,10 @@ public static class NitrideYamlEntityExtensions this Entity entity, IDeserializer deserializer) { - if (!entity.TryGet(out ITextContent content)) - { - return default; - } + string? text = entity.GetText(); - string text = content.GetText(); - - return deserializer.Deserialize(text); + return text != null + ? deserializer.Deserialize(text) + : default; } } diff --git a/src/Nitride/Contents/TextContentExtensions.cs b/src/Nitride/Contents/TextContentExtensions.cs index 38ecb5f..440952a 100644 --- a/src/Nitride/Contents/TextContentExtensions.cs +++ b/src/Nitride/Contents/TextContentExtensions.cs @@ -1,5 +1,7 @@ using System.IO; +using Gallium; + namespace Nitride.Contents; public static class TextContentExtensions @@ -18,4 +20,31 @@ public static class TextContentExtensions return writer.ToString(); } + + public static string? GetText(this IBinaryContent content) + { + if (content is ITextContentConvertable convertableContent) + { + return convertableContent + .ToTextContent() + .GetText(); + } + + return null; + } + + public static string? GetText(this Entity entity) + { + if (entity.TryGet(out ITextContent textContent)) + { + return textContent.GetText(); + } + + if (entity.TryGet(out IBinaryContent binaryContent)) + { + return binaryContent.GetText(); + } + + return null; + } }