diff --git a/AideDeJeu/AideDeJeu/Models/Item.cs b/AideDeJeu/AideDeJeu/Models/Item.cs index 85d7198a..1f8405ad 100644 --- a/AideDeJeu/AideDeJeu/Models/Item.cs +++ b/AideDeJeu/AideDeJeu/Models/Item.cs @@ -8,6 +8,10 @@ using System.Runtime.Serialization; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Xml; +using YamlDotNet.Core; +using YamlDotNet.Core.Events; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; namespace AideDeJeuLib { @@ -115,6 +119,8 @@ namespace AideDeJeuLib [DataMember] public string ParentName { get; set; } + + [YamlIgnore] [IgnoreDataMember] [Ignore] public string ParentNameLink @@ -143,6 +149,8 @@ namespace AideDeJeuLib public int NameLevel { get; set; } [DataMember] public string AltName { get; set; } + + [YamlIgnore] [IgnoreDataMember] public string AltNameText { @@ -168,9 +176,43 @@ namespace AideDeJeuLib } [DataMember] public string Source { get; set; } + + [YamlIgnore] [DataMember] public virtual string Markdown { get; set; } [DataMember] public string FullText { get; set; } + + [IgnoreDataMember] + [YamlIgnore] + public Dictionary ClassMapping = new Dictionary() + { + { nameof(Generic), typeof(Generic) }, + }; + + [IgnoreDataMember] + [YamlIgnore] + public string Yaml + { + get + { + var serializer = new SerializerBuilder() + .WithTagMapping($"!{nameof(MonsterHD)}", typeof(MonsterHD)) + .EnsureRoundtrip() + .WithNamingConvention(new PascalCaseNamingConvention()) + .Build(); + return serializer.Serialize(this); + } + } + + [IgnoreDataMember] + [YamlIgnore] + public string YamlMarkdown + { + get + { + return $"---\n{Yaml}---\n{Markdown}"; + } + } } } diff --git a/AideDeJeu/AideDeJeuCmd/Program.cs b/AideDeJeu/AideDeJeuCmd/Program.cs index 98605ffa..6286a93b 100644 --- a/AideDeJeu/AideDeJeuCmd/Program.cs +++ b/AideDeJeu/AideDeJeuCmd/Program.cs @@ -321,8 +321,11 @@ namespace AideDeJeuCmd var monstersVO = await context.MonstersVO.ToListAsync(); var spells = await context.Spells.ToListAsync(); - var serializer = new SerializerBuilder().WithNamingConvention(new PascalCaseNamingConvention()).Build(); - var yaml = serializer.Serialize(spells.FirstOrDefault()); + var serializer = new SerializerBuilder().WithTagMapping("!MonsterHD", typeof(MonsterHD)).EnsureRoundtrip().WithNamingConvention(new PascalCaseNamingConvention()).Build(); + var deserializer = new DeserializerBuilder().WithTagMapping("!MonsterHD", typeof(MonsterHD)).WithNamingConvention(new PascalCaseNamingConvention()).Build(); + var yaml = serializer.Serialize(monsters.FirstOrDefault()); + var sr = new StringReader(yaml); + var deser = deserializer.Deserialize(sr); Console.WriteLine(yaml); }