diff --git a/AideDeJeu/AideDeJeu/Models/Item.cs b/AideDeJeu/AideDeJeu/Models/Item.cs index 1f8405ad..fd01e7a8 100644 --- a/AideDeJeu/AideDeJeu/Models/Item.cs +++ b/AideDeJeu/AideDeJeu/Models/Item.cs @@ -185,9 +185,29 @@ namespace AideDeJeuLib [IgnoreDataMember] [YamlIgnore] - public Dictionary ClassMapping = new Dictionary() + public static Dictionary ClassMapping = new Dictionary() { - { nameof(Generic), typeof(Generic) }, + { "Generic", typeof(Generic) }, + { "Monster", typeof(Monster) }, + { "MonsterHD", typeof(MonsterHD) }, + { "MonsterVO", typeof(MonsterVO) }, + { "Monsters", typeof(Monsters) }, + { "MonstersHD", typeof(MonstersHD) }, + { "MonstersVO", typeof(MonstersVO) }, + { "Spell", typeof(Spell) }, + { "SpellHD", typeof(SpellHD) }, + { "SpellVO", typeof(SpellVO) }, + { "Spells", typeof(Spells) }, + { "SpellsHD", typeof(SpellsHD) }, + { "SpellsVO", typeof(SpellsVO) }, + { "Equipment", typeof(Equipment) }, + { "Equipments", typeof(Equipments) }, + { "Item", typeof(Item) }, + { "Items", typeof(Items) }, + { "LinkItem", typeof(LinkItem) }, + { "MagicItem", typeof(MagicItem) }, + { "MagicItems", typeof(MagicItems) }, + { "PageItem", typeof(PageItem) }, }; [IgnoreDataMember] @@ -196,8 +216,12 @@ namespace AideDeJeuLib { get { - var serializer = new SerializerBuilder() - .WithTagMapping($"!{nameof(MonsterHD)}", typeof(MonsterHD)) + var builder = new SerializerBuilder(); + foreach(var mapping in ClassMapping) + { + builder = builder.WithTagMapping($"!{mapping.Key}", mapping.Value); + } + var serializer = builder .EnsureRoundtrip() .WithNamingConvention(new PascalCaseNamingConvention()) .Build(); @@ -214,5 +238,27 @@ namespace AideDeJeuLib return $"---\n{Yaml}---\n{Markdown}"; } } + + public static Item ParseYamlMarkdown(string yamlmd) + { + var builder = new DeserializerBuilder(); + foreach (var mapping in ClassMapping) + { + builder = builder.WithTagMapping($"!{mapping.Key}", mapping.Value); + } + var yamlDeserializer = builder + .WithNamingConvention(new PascalCaseNamingConvention()) + .Build(); + + var parser = new Parser(new System.IO.StringReader(yamlmd)); + parser.Expect(); + parser.Expect(); + var post = yamlDeserializer.Deserialize(parser); + parser.Expect(); + //parser.MoveNext(); + var item = post as Item; + item.Markdown = yamlmd.Substring(parser.Current.End.Index + 1); + return post as Item; + } } } diff --git a/AideDeJeu/AideDeJeuCmd/Program.cs b/AideDeJeu/AideDeJeuCmd/Program.cs index 78d98ba7..e23b20c4 100644 --- a/AideDeJeu/AideDeJeuCmd/Program.cs +++ b/AideDeJeu/AideDeJeuCmd/Program.cs @@ -337,6 +337,8 @@ namespace AideDeJeuCmd var yaml = serializer.Serialize(monsters); var sr = new StringReader(yaml); var deser = deserializer.Deserialize(sr); + + var truc = Item.ParseYamlMarkdown(monsters.FirstOrDefault().YamlMarkdown); Console.WriteLine(yaml); }