1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-12-23 10:33:50 +00:00

Refonte parsing ok

This commit is contained in:
Yan Maniez 2018-08-19 18:18:18 +02:00
parent 83120c1749
commit 6bb3737b1f
18 changed files with 520 additions and 177 deletions

View file

@ -327,6 +327,10 @@
<EmbeddedResource Include="..\..\Data\l5r_rituals_hd.md" Link="Data\l5r_rituals_hd.md" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="..\..\Data\sandbox.md" Link="Data\sandbox.md" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Views\MainNavigationPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>

View file

@ -10,11 +10,219 @@ using Markdig.Parsers;
using System.IO;
using Markdig.Renderers.Normalize;
using Markdig.Renderers.Normalize.Inlines;
using System.Reflection;
namespace AideDeJeu.Tools
{
public static class MarkdownExtensions
{
public static Item ToItem(string md)
{
var pipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();
var document = MarkdownParser.Parse(md, pipeline);
var enumerator = document.GetEnumerator();
try
{
enumerator.MoveNext();
while (enumerator.Current != null)
{
var block = enumerator.Current;
if (block is HtmlBlock)
{
if (block.IsNewItem())
{
var item = ParseItem(ref enumerator);
return item;
}
}
enumerator.MoveNext();
}
}
finally
{
enumerator.Dispose();
}
return null;
}
public static Item ParseItem(ref ContainerBlock.Enumerator enumerator)
{
var currentItem = enumerator.Current.GetNewItem();
//item.Parse(ref enumerator);
enumerator.MoveNext();
while (enumerator.Current != null)
{
var block = enumerator.Current;
if (block is HtmlBlock)
{
if (block.IsClosingItem())
{
return currentItem;
}
else if (block.IsNewItem())
{
var subItem = ParseItem(ref enumerator);
var propertyName = subItem.GetType().Name;
if (currentItem.GetType().GetProperty(propertyName) != null)
{
PropertyInfo prop = currentItem.GetType().GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance);
if (null != prop && prop.CanWrite)
{
prop.SetValue(currentItem, subItem, null);
}
}
else if (currentItem is Items)
{
var items = currentItem as Items;
items.Add(subItem);
}
}
}
else // if (block is ContainerBlock)
{
ParseItemProperties(currentItem, block);
//var listBlock = block as ContainerBlock;
//foreach (var inblock in listBlock)
//{
// if (inblock is ListItemBlock)
// {
// var listItemBlock = inblock as ListItemBlock;
// foreach (var ininblock in listItemBlock)
// {
// if (ininblock is ParagraphBlock)
// {
// var parBlock = ininblock as ParagraphBlock;
// ParseItemProperties(currentItem, parBlock.Inline);
// }
// }
// }
//}
}
currentItem.Markdown += enumerator.Current.ToMarkdownString();
enumerator.MoveNext();
}
// bad !
return currentItem;
}
public static void ParseItemProperties(Item item, Block block)
{
switch(block)
{
case ContainerBlock blocks:
ParseItemProperties(item, blocks);
break;
case LeafBlock leaf:
ParseItemProperties(item, leaf.Inline);
break;
}
}
public static void ParseItemProperties(Item item, ContainerBlock blocks)
{
foreach(var block in blocks)
{
ParseItemProperties(item, block);
}
}
public static void ParseItemProperties(Item item, ContainerInline inlines)
{
PropertyInfo prop = null;
foreach (var inline in inlines)
{
if(inline is HtmlInline)
{
var tag = (inline as HtmlInline).Tag;
if (tag.StartsWith("</"))
{
prop = null;
}
else if (tag.StartsWith("<") && !tag.StartsWith("</"))
{
var propertyName = tag.Substring(1, tag.Length - 2);
prop = item.GetType().GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance);
}
}
else
{
if (null != prop && prop.CanWrite)
{
prop.SetValue(item, inline.ToMarkdownString(), null);
}
}
}
}
public static bool IsNewItem(this Block block)
{
var htmlBlock = block as HtmlBlock;
if (htmlBlock.Type == HtmlBlockType.NonInterruptingBlock)
{
var tag = htmlBlock.Lines.Lines.FirstOrDefault().Slice.ToString();
if (!string.IsNullOrEmpty(tag))
{
if (tag.StartsWith("<") && !tag.StartsWith("</"))
{
return true;
}
}
}
return false;
}
public static bool IsClosingItem(this Block block)
{
var htmlBlock = block as HtmlBlock;
if (htmlBlock.Type == HtmlBlockType.NonInterruptingBlock)
{
var tag = htmlBlock.Lines.Lines.FirstOrDefault().Slice.ToString();
if (!string.IsNullOrEmpty(tag))
{
if (tag.StartsWith("</"))
{
return true;
}
}
}
return false;
}
public static Item GetNewItem(this Block block)
{
var htmlBlock = block as HtmlBlock;
if (htmlBlock.Type == HtmlBlockType.NonInterruptingBlock)
{
var tag = htmlBlock.Lines.Lines.FirstOrDefault().Slice.ToString();
if (!string.IsNullOrEmpty(tag))
{
if (tag.StartsWith("<") && !tag.StartsWith("</"))
{
var name = $"AideDeJeuLib.{tag.Substring(1, tag.Length - 2)}, AideDeJeu";
var type = Type.GetType(name);
var instance = Activator.CreateInstance(type) as Item;
return instance;
}
}
}
return null;
}
/*
public static Item ToItem(string md)
{
var pipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();
@ -99,7 +307,7 @@ namespace AideDeJeu.Tools
}
return null;
}
*/
public static string ToMarkdownString(this Block block)
@ -205,21 +413,21 @@ namespace AideDeJeu.Tools
public static string ToMarkdownString(this Markdig.Extensions.Tables.Table tableBlock)
{
var ret = string.Empty;
foreach(Markdig.Extensions.Tables.TableRow row in tableBlock)
foreach (Markdig.Extensions.Tables.TableRow row in tableBlock)
{
var line = "|";
foreach(Markdig.Extensions.Tables.TableCell cell in row)
foreach (Markdig.Extensions.Tables.TableCell cell in row)
{
foreach(Markdig.Syntax.ParagraphBlock block in cell)
foreach (Markdig.Syntax.ParagraphBlock block in cell)
{
line += block.ToMarkdownString().Replace("\n", "");
}
line += "|";
}
if(row.IsHeader)
if (row.IsHeader)
{
line += "\n|";
for(int i = 0; i < row.Count; i++)
for (int i = 0; i < row.Count; i++)
{
line += "---|";
}

View file

@ -12,18 +12,18 @@ namespace AideDeJeuLib
{
public class Generic : Item
{
public string Text { get; set; }
//public string Text { get; set; }
public override string Markdown
{
get
{
return
//$"# {Name}\n\n" +
//$"{AltName}\n\n" +
Text;
}
}
//public override string Markdown
//{
// get
// {
// return
// //$"# {Name}\n\n" +
// //$"{AltName}\n\n" +
// Text;
// }
//}
public void ParseBlock(Block block)
{
@ -35,7 +35,7 @@ namespace AideDeJeuLib
this.Name = headingBlock.Inline.ToMarkdownString();
this.NameLevel = headingBlock.Level - 1;
}
this.Text += block.ToMarkdownString();
this.Markdown += block.ToMarkdownString();
}
else if (block is ListBlock)
{
@ -58,11 +58,11 @@ namespace AideDeJeuLib
{
new Tuple<string, Action<Generic, string>>("AltName: ", (m, s) =>
{
this.Text += "- " + s; m.AltName = s;
this.Markdown += "- " + s; m.AltName = s;
}),
new Tuple<string, Action<Generic, string>>("", (m, s) =>
{
this.Text += "- " + str;
this.Markdown += "- " + str;
}),
};
@ -78,16 +78,16 @@ namespace AideDeJeuLib
}
}
}
this.Text += "\n";
this.Markdown += "\n";
}
else
{
this.Text += block.ToMarkdownString();
this.Markdown += block.ToMarkdownString();
}
}
else
{
this.Text += block.ToMarkdownString();
this.Markdown += block.ToMarkdownString();
}
}
public override void Parse(ref ContainerBlock.Enumerator enumerator)

View file

@ -9,7 +9,7 @@ namespace AideDeJeuLib
{
public class Equipment : Item
{
public string Text { get; set; }
//public string Text { get; set; }
public string Type { get; set; }
public string Price { get; set; }
public string ArmorClass { get; set; }
@ -24,16 +24,16 @@ namespace AideDeJeuLib
public string WeightCapacity { get; set; }
public string Speed { get; set; }
public override string Markdown
{
get
{
return
//$"# {Name}\n\n" +
//$"{AltName}\n\n" +
Text;
}
}
//public override string Markdown
//{
// get
// {
// return
// //$"# {Name}\n\n" +
// //$"{AltName}\n\n" +
// Text;
// }
//}
public void ParseBlock(Block block)
{
@ -44,7 +44,7 @@ namespace AideDeJeuLib
{
this.Name = headingBlock.Inline.ToMarkdownString();
}
this.Text += block.ToMarkdownString();
this.Markdown += block.ToMarkdownString();
}
else if (block is ListBlock)
{
@ -67,63 +67,63 @@ namespace AideDeJeuLib
{
new Tuple<string, Action<Equipment, string>>("AltName: ", (m, s) =>
{
this.Text += "- " + s; m.AltName = s;
this.Markdown += "- " + s; m.AltName = s;
}),
new Tuple<string, Action<Equipment, string>>("**Type** ", (m, s) =>
{
this.Text += "- " + str; m.Type = s;
this.Markdown += "- " + str; m.Type = s;
}),
new Tuple<string, Action<Equipment, string>>("**Prix** ", (m, s) =>
{
this.Text += "- " + str; m.Price = s;
this.Markdown += "- " + str; m.Price = s;
}),
new Tuple<string, Action<Equipment, string>>("**Classe d'armure** ", (m, s) =>
{
this.Text += "- " + str; m.ArmorClass = s;
this.Markdown += "- " + str; m.ArmorClass = s;
}),
new Tuple<string, Action<Equipment, string>>("**Discrétion** ", (m, s) =>
{
this.Text += "- " + str; m.Discretion = s;
this.Markdown += "- " + str; m.Discretion = s;
}),
new Tuple<string, Action<Equipment, string>>("**Poids** ", (m, s) =>
{
this.Text += "- " + str; m.Weight = s;
this.Markdown += "- " + str; m.Weight = s;
}),
new Tuple<string, Action<Equipment, string>>("**Force** ", (m, s) =>
{
this.Text += "- " + str; m.Force = s;
this.Markdown += "- " + str; m.Force = s;
}),
new Tuple<string, Action<Equipment, string>>("**Rareté** ", (m, s) =>
{
this.Text += "- " + str; m.Rarity = s;
this.Markdown += "- " + str; m.Rarity = s;
}),
new Tuple<string, Action<Equipment, string>>("**Dégâts** ", (m, s) =>
{
this.Text += "- " + str; m.Damages = s;
this.Markdown += "- " + str; m.Damages = s;
}),
new Tuple<string, Action<Equipment, string>>("**Propriétés** ", (m, s) =>
{
this.Text += "- " + str; m.Properties = s;
this.Markdown += "- " + str; m.Properties = s;
}),
new Tuple<string, Action<Equipment, string>>("**Unité** ", (m, s) =>
{
this.Text += "- " + str; m.Unity = s; //m.Name += $" ({s})";
this.Markdown += "- " + str; m.Unity = s; //m.Name += $" ({s})";
}),
new Tuple<string, Action<Equipment, string>>("**Capacité** ", (m, s) =>
{
this.Text += "- " + str; m.Capacity = s;
this.Markdown += "- " + str; m.Capacity = s;
}),
new Tuple<string, Action<Equipment, string>>("**Capacité de charge** ", (m, s) =>
{
this.Text += "- " + str; m.WeightCapacity = s;
this.Markdown += "- " + str; m.WeightCapacity = s;
}),
new Tuple<string, Action<Equipment, string>>("**Vitesse** ", (m, s) =>
{
this.Text += "- " + str; m.Speed = s;
this.Markdown += "- " + str; m.Speed = s;
}),
new Tuple<string, Action<Equipment, string>>("", (m, s) =>
{
this.Text += str;
this.Markdown += str;
}),
};
@ -139,16 +139,16 @@ namespace AideDeJeuLib
}
}
}
this.Text += "\n";
this.Markdown += "\n";
}
else
{
this.Text += block.ToMarkdownString();
this.Markdown += block.ToMarkdownString();
}
}
else
{
this.Text += block.ToMarkdownString();
this.Markdown += block.ToMarkdownString();
}
}

View file

@ -7,7 +7,7 @@ namespace AideDeJeuLib
{
public class HomeItem : Item
{
public override string Markdown
public new string Markdown
{
get
{

View file

@ -4,7 +4,7 @@ using System.Xml;
namespace AideDeJeuLib
{
public abstract class Item
public class Item
{
public string Name { get; set; }
public int NameLevel { get; set; }
@ -32,7 +32,7 @@ namespace AideDeJeuLib
}
}
public abstract string Markdown { get; }
public abstract void Parse(ref Markdig.Syntax.ContainerBlock.Enumerator enumerator);
public string Markdown { get; set; }
public virtual void Parse(ref Markdig.Syntax.ContainerBlock.Enumerator enumerator) { }
}
}

View file

@ -10,11 +10,11 @@ using Markdig.Syntax.Inlines;
namespace AideDeJeuLib
{
public class Items : Item, IEnumerable<Item>
public class Items : Item, IList<Item>
{
private IEnumerable<Item> _Items;
private List<Item> _Items;
public Items(IEnumerable<Item> items)
public Items(List<Item> items)
{
_Items = items;
}
@ -24,17 +24,22 @@ namespace AideDeJeuLib
_Items = new List<Item>();
}
private string _Markdown = "";
public override string Markdown
{
get
{
return _Markdown;
}
}
//private string _Markdown = "";
//public override string Markdown
//{
// get
// {
// return _Markdown;
// }
//}
public string Header { get; set; }
public int Count => _Items.Count();
public bool IsReadOnly => false;
public Item this[int index] { get => _Items[index]; set => _Items[index] = value; }
public IEnumerator<Item> GetEnumerator()
{
@ -92,5 +97,45 @@ namespace AideDeJeuLib
{
return null;
}
public int IndexOf(Item item)
{
return _Items.IndexOf(item);
}
public void Insert(int index, Item item)
{
_Items.Insert(index, item);
}
public void RemoveAt(int index)
{
_Items.RemoveAt(index);
}
public void Add(Item item)
{
_Items.Add(item);
}
public void Clear()
{
_Items.Clear();
}
public bool Contains(Item item)
{
return _Items.Contains(item);
}
public void CopyTo(Item[] array, int arrayIndex)
{
_Items.CopyTo(array, arrayIndex);
}
public bool Remove(Item item)
{
throw new NotImplementedException();
}
}
}

View file

@ -26,15 +26,16 @@ namespace AideDeJeuLib
var match = regex.Match(value);
Name = match.Groups["name"].Value;
Link = match.Groups["link"].Value;
Markdown = $"# {NameLink}\n\n";
}
}
public override string Markdown
{
get
{
return $"# {NameLink}\n\n";
}
}
//public override string Markdown
//{
// get
// {
// return $"# {NameLink}\n\n";
// }
//}
public override void Parse(ref ContainerBlock.Enumerator enumerator)
{

View file

@ -8,34 +8,34 @@ namespace AideDeJeuLib
{
public class MonsterHD : Monster
{
public override string Markdown
{
get
{
return
$"# {Name}\n" +
$"{AltName}\n" +
$"{Type} de taille {Size}, {Alignment}\n" +
$"**Classe d'armure** {ArmorClass}\n" +
$"**Points de vie** {HitPoints}\n" +
$"**Vitesse** {Speed}\n\n" +
$"|FOR|DEX|CON|INT|SAG|CHA|\n" +
$"|---|---|---|---|---|---|\n" +
$"|{Strength}|{Dexterity}|{Constitution}|{Intelligence}|{Wisdom}|{Charisma}|\n\n" +
(Skills != null ? $"**Compétences** {Skills}\n" : "") +
(SavingThrows != null ? $"**Jets de sauvegarde** {SavingThrows}\n" : "") +
(DamageVulnerabilities != null ? $"**Vulnérabilité aux dégâts** {DamageVulnerabilities}\n" : "") +
(DamageImmunities != null ? $"**Immunité contre les dégâts** {DamageImmunities}\n" : "") +
(ConditionImmunities != null ? $"**Immunité contre les états** {ConditionImmunities}\n" : "") +
(DamageResistances != null ? $"**Résistance aux dégâts** {DamageResistances}\n" : "") +
$"**Sens** {Senses}\n" +
$"**Langues** {Languages}\n" +
$"**Dangerosité** {Challenge}\n\n" +
(SpecialFeatures != null ? $"## Capacités\n\n" + SpecialFeatures.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
(Actions != null ? $"## Actions\n\n" + Actions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
(Reactions != null ? $"## Réactions\n\n" + Reactions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
(LegendaryActions != null ? $"## Actions Légendaires\n\n" + LegendaryActions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "");
}
}
//public override string Markdown
//{
// get
// {
// return
// $"# {Name}\n" +
// $"{AltName}\n" +
// $"{Type} de taille {Size}, {Alignment}\n" +
// $"**Classe d'armure** {ArmorClass}\n" +
// $"**Points de vie** {HitPoints}\n" +
// $"**Vitesse** {Speed}\n\n" +
// $"|FOR|DEX|CON|INT|SAG|CHA|\n" +
// $"|---|---|---|---|---|---|\n" +
// $"|{Strength}|{Dexterity}|{Constitution}|{Intelligence}|{Wisdom}|{Charisma}|\n\n" +
// (Skills != null ? $"**Compétences** {Skills}\n" : "") +
// (SavingThrows != null ? $"**Jets de sauvegarde** {SavingThrows}\n" : "") +
// (DamageVulnerabilities != null ? $"**Vulnérabilité aux dégâts** {DamageVulnerabilities}\n" : "") +
// (DamageImmunities != null ? $"**Immunité contre les dégâts** {DamageImmunities}\n" : "") +
// (ConditionImmunities != null ? $"**Immunité contre les états** {ConditionImmunities}\n" : "") +
// (DamageResistances != null ? $"**Résistance aux dégâts** {DamageResistances}\n" : "") +
// $"**Sens** {Senses}\n" +
// $"**Langues** {Languages}\n" +
// $"**Dangerosité** {Challenge}\n\n" +
// (SpecialFeatures != null ? $"## Capacités\n\n" + SpecialFeatures.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
// (Actions != null ? $"## Actions\n\n" + Actions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
// (Reactions != null ? $"## Réactions\n\n" + Reactions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
// (LegendaryActions != null ? $"## Actions Légendaires\n\n" + LegendaryActions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "");
// }
//}
}
}

View file

@ -8,34 +8,34 @@ namespace AideDeJeuLib
{
public class MonsterVO : Monster
{
public override string Markdown
{
get
{
return
$"# {Name}\n" +
$"{AltName}\n" +
$"{Size} {Type}, {Alignment}\n" +
$"**Armor Class** {ArmorClass}\n" +
$"**Hit Points** {HitPoints}\n" +
$"**Speed** {Speed}\n\n" +
$"|STR|DEX|CON|INT|WIS|CHA|\n" +
$"|---|---|---|---|---|---|\n" +
$"|{Strength}|{Dexterity}|{Constitution}|{Intelligence}|{Wisdom}|{Charisma}|\n\n" +
(Skills != null ? $"**Skills** {Skills}\n" : "") +
(SavingThrows != null ? $"**Saving Throws** {SavingThrows}\n" : "") +
(DamageVulnerabilities != null ? $"**Damage Vulnerabilities** {DamageVulnerabilities}\n" : "") +
(DamageImmunities != null ? $"**Damage Immunities** {DamageImmunities}\n" : "") +
(ConditionImmunities != null ? $"**Condition Immunities** {ConditionImmunities}\n" : "") +
(DamageResistances != null ? $"**Damage Resistances** {DamageResistances}\n" : "") +
$"**Senses** {Senses}\n" +
$"**Languages** {Languages}\n" +
$"**Challenge** {Challenge}\n\n" +
(SpecialFeatures != null ? $"## Special Features\n\n" + SpecialFeatures.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
(Actions != null ? $"## Actions\n\n" + Actions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
(Reactions != null ? $"## Reactions\n\n" + Reactions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
(LegendaryActions != null ? $"## Legendary Actions\n\n" + LegendaryActions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "");
}
}
//public override string Markdown
//{
// get
// {
// return
// $"# {Name}\n" +
// $"{AltName}\n" +
// $"{Size} {Type}, {Alignment}\n" +
// $"**Armor Class** {ArmorClass}\n" +
// $"**Hit Points** {HitPoints}\n" +
// $"**Speed** {Speed}\n\n" +
// $"|STR|DEX|CON|INT|WIS|CHA|\n" +
// $"|---|---|---|---|---|---|\n" +
// $"|{Strength}|{Dexterity}|{Constitution}|{Intelligence}|{Wisdom}|{Charisma}|\n\n" +
// (Skills != null ? $"**Skills** {Skills}\n" : "") +
// (SavingThrows != null ? $"**Saving Throws** {SavingThrows}\n" : "") +
// (DamageVulnerabilities != null ? $"**Damage Vulnerabilities** {DamageVulnerabilities}\n" : "") +
// (DamageImmunities != null ? $"**Damage Immunities** {DamageImmunities}\n" : "") +
// (ConditionImmunities != null ? $"**Condition Immunities** {ConditionImmunities}\n" : "") +
// (DamageResistances != null ? $"**Damage Resistances** {DamageResistances}\n" : "") +
// $"**Senses** {Senses}\n" +
// $"**Languages** {Languages}\n" +
// $"**Challenge** {Challenge}\n\n" +
// (SpecialFeatures != null ? $"## Special Features\n\n" + SpecialFeatures.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
// (Actions != null ? $"## Actions\n\n" + Actions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
// (Reactions != null ? $"## Reactions\n\n" + Reactions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "") +
// (LegendaryActions != null ? $"## Legendary Actions\n\n" + LegendaryActions.Aggregate((s1, s2) => s1 + "\n\n" + s2) : "");
// }
//}
}
}

View file

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Text;
using Markdig.Syntax;
namespace AideDeJeuLib
{
public class Description : Item
{
//public override string Markdown => string.Empty;
public override void Parse(ref ContainerBlock.Enumerator enumerator)
{
}
}
}

View file

@ -10,7 +10,7 @@ using System.Xml.Serialization;
namespace AideDeJeuLib
{
public abstract class Spell : Item
public class Spell : Item
{
public string Level { get; set; }
public string Type { get; set; }
@ -23,7 +23,15 @@ namespace AideDeJeuLib
public string DescriptionHtml { get; set; }
public string Source { get; set; }
public string Classes { get; set; }
public Description Description { get; set; }
public abstract string LevelType { get; set; }
public virtual string LevelType { get; set; }
//public override string Markdown => throw new NotImplementedException();
public override void Parse(ref ContainerBlock.Enumerator enumerator)
{
throw new NotImplementedException();
}
}
}

View file

@ -51,24 +51,24 @@ namespace AideDeJeuLib
}
}
}
public override string Markdown
{
get
{
return
$"# {Name}\n" +
$"{AltName}\n\n" +
$"_{LevelType}_\n" +
$"**Temps d'incantation :** {CastingTime}\n" +
$"**Portée :** {Range}\n" +
$"**Composantes :** {Components}\n" +
$"**Durée :** {Duration}\n" +
$"**Classes :** {Classes}\n" +
$"**Source :** {Source}\n" +
$"\n" +
$"{DescriptionHtml}";
}
}
//public override string Markdown
//{
// get
// {
// return
// $"# {Name}\n" +
// $"{AltName}\n\n" +
// $"_{LevelType}_\n" +
// $"**Temps d'incantation :** {CastingTime}\n" +
// $"**Portée :** {Range}\n" +
// $"**Composantes :** {Components}\n" +
// $"**Durée :** {Duration}\n" +
// $"**Classes :** {Classes}\n" +
// $"**Source :** {Source}\n" +
// $"\n" +
// $"{DescriptionHtml}";
// }
//}
public override void Parse(ref ContainerBlock.Enumerator enumerator)
{

View file

@ -32,24 +32,24 @@ namespace AideDeJeuLib
}
}
public override string Markdown
{
get
{
return
$"# {Name}\n" +
$"{AltName}\n\n" +
$"_{LevelType}_\n" +
$"**Casting Time :** {CastingTime}\n" +
$"**Range :** {Range}\n" +
$"**Components :** {Components}\n" +
$"**Duration :** {Duration}\n" +
$"**Classes :** {Classes}\n" +
$"**Source :** {Source}\n" +
$"\n" +
$"{DescriptionHtml}";
}
}
//public override string Markdown
//{
// get
// {
// return
// $"# {Name}\n" +
// $"{AltName}\n\n" +
// $"_{LevelType}_\n" +
// $"**Casting Time :** {CastingTime}\n" +
// $"**Range :** {Range}\n" +
// $"**Components :** {Components}\n" +
// $"**Duration :** {Duration}\n" +
// $"**Classes :** {Classes}\n" +
// $"**Source :** {Source}\n" +
// $"\n" +
// $"{DescriptionHtml}";
// }
//}
public override void Parse(ref ContainerBlock.Enumerator enumerator)
{

View file

@ -194,7 +194,7 @@ namespace AideDeJeu.ViewModels
spell.Type.ToLower().Contains(ecole.ToLower()) &&
spell.Source.Contains(source) &&
spell.Classes.Contains(classe) &&
spell.Rituel.Contains(rituel) &&
(spell.Rituel == null || spell.Rituel.Contains(rituel)) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))

View file

@ -28,7 +28,15 @@ namespace AideDeJeu.ViewModels
//return Tools.MarkdownExtensions.ToItem(md);
if (md != null)
{
_AllItems[source] = Tools.MarkdownExtensions.ToItem(md);
var item = Tools.MarkdownExtensions.ToItem(md);
if (item != null)
{
_AllItems[source] = item;
}
else
{
return null;
}
}
else
{