From 2f4a0f1f77cdeaab97ce8d4fd525ae8e52414840 Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Fri, 20 Jul 2018 22:37:33 +0200 Subject: [PATCH] Renderer --- .../{Tools => Markdig}/MarkdownExtensions.cs | 18 ++++ .../{Tools => Markdig}/MarkdownThemes.cs | 0 .../AideDeJeu/Models/Conditions/Generic.cs | 88 ++++--------------- 3 files changed, 35 insertions(+), 71 deletions(-) rename AideDeJeu/AideDeJeu/{Tools => Markdig}/MarkdownExtensions.cs (93%) rename AideDeJeu/AideDeJeu/{Tools => Markdig}/MarkdownThemes.cs (100%) diff --git a/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs b/AideDeJeu/AideDeJeu/Markdig/MarkdownExtensions.cs similarity index 93% rename from AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs rename to AideDeJeu/AideDeJeu/Markdig/MarkdownExtensions.cs index 87389719..fada8620 100644 --- a/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs +++ b/AideDeJeu/AideDeJeu/Markdig/MarkdownExtensions.cs @@ -7,6 +7,8 @@ using AideDeJeuLib; using Markdig.Syntax; using Markdig.Syntax.Inlines; using Markdig.Parsers; +using System.IO; +using Markdig.Renderers.Normalize; namespace AideDeJeu.Tools { @@ -82,6 +84,22 @@ namespace AideDeJeu.Tools + public static string ToMarkdownString(this Block block) + { + var pipeline = new MarkdownPipelineBuilder() + .UsePipeTables() + .Build(); + + using (var writer = new StringWriter()) + { + var renderer = new NormalizeRenderer(writer); + pipeline.Setup(renderer); + + renderer.Render(block); + return writer.ToString(); + } + } + public static string ToMarkdownString(this Markdig.Syntax.Inlines.ContainerInline inlines) { var str = string.Empty; diff --git a/AideDeJeu/AideDeJeu/Tools/MarkdownThemes.cs b/AideDeJeu/AideDeJeu/Markdig/MarkdownThemes.cs similarity index 100% rename from AideDeJeu/AideDeJeu/Tools/MarkdownThemes.cs rename to AideDeJeu/AideDeJeu/Markdig/MarkdownThemes.cs diff --git a/AideDeJeu/AideDeJeu/Models/Conditions/Generic.cs b/AideDeJeu/AideDeJeu/Models/Conditions/Generic.cs index eae050f7..aa98d1e7 100644 --- a/AideDeJeu/AideDeJeu/Models/Conditions/Generic.cs +++ b/AideDeJeu/AideDeJeu/Models/Conditions/Generic.cs @@ -31,11 +31,9 @@ namespace AideDeJeuLib while (enumerator.Current != null) { var block = enumerator.Current; - //DumpBlock(block); - if (block is Markdig.Syntax.HeadingBlock) + if (block is HeadingBlock) { - var headingBlock = block as Markdig.Syntax.HeadingBlock; - //DumpHeadingBlock(headingBlock); + var headingBlock = block as HeadingBlock; if (headingBlock.HeaderChar == '#' && (headingBlock.Level == 1 || headingBlock.Level == 2)) { if (this.Name == null) @@ -44,43 +42,39 @@ namespace AideDeJeuLib } else { - this.Text += new string(headingBlock.HeaderChar, headingBlock.Level) + " " + headingBlock.Inline.ToMarkdownString() + "\n\n"; + this.Text += block.ToMarkdownString(); } } else { - this.Text += new string(headingBlock.HeaderChar, headingBlock.Level) + " " + headingBlock.Inline.ToMarkdownString() + "\n\n"; + this.Text += block.ToMarkdownString(); } } - if (block is Markdig.Syntax.ParagraphBlock) + else if (block is ParagraphBlock) { if (block.IsNewItem()) { return; } - var paragraphBlock = block as Markdig.Syntax.ParagraphBlock; + var paragraphBlock = block as ParagraphBlock; this.Text += paragraphBlock.ToMarkdownString() + "\n"; } - if (block is Markdig.Syntax.ListBlock) + else if (block is ListBlock) { - var listBlock = block as Markdig.Syntax.ListBlock; - //DumpListBlock(listBlock); + var listBlock = block as ListBlock; if (listBlock.BulletType == '-') { foreach (var inblock in listBlock) { - //DumpBlock(inblock); var regex = new Regex("(?.*?): (?.*)"); - if (inblock is Markdig.Syntax.ListItemBlock) + if (inblock is ListItemBlock) { - var listItemBlock = inblock as Markdig.Syntax.ListItemBlock; + var listItemBlock = inblock as ListItemBlock; foreach (var ininblock in listItemBlock) { - //DumpBlock(ininblock); - if (ininblock is Markdig.Syntax.ParagraphBlock) + if (ininblock is ParagraphBlock) { - var paragraphBlock = ininblock as Markdig.Syntax.ParagraphBlock; - //DumpParagraphBlock(paragraphBlock); + var paragraphBlock = ininblock as ParagraphBlock; var str = paragraphBlock.Inline.ToMarkdownString(); var properties = new List>>() @@ -104,59 +98,7 @@ namespace AideDeJeuLib } else { - //var pipeline = new MarkdownPipelineBuilder().Build(); - - //var writer = new StringWriter(); - //var renderer = new NormalizeRenderer(writer); - //pipeline.Setup(renderer); - - //renderer.Render(listBlock); - - int index = 0; - foreach (var inblock in listBlock) - { - index++; - if (inblock is Markdig.Syntax.ListItemBlock) - { - var listItemBlock = inblock as Markdig.Syntax.ListItemBlock; - foreach (var ininblock in listItemBlock) - { - //DumpBlock(ininblock); - if (ininblock is Markdig.Syntax.ParagraphBlock) - { - var paragraphBlock = ininblock as Markdig.Syntax.ParagraphBlock; - if (listBlock.IsOrdered) - { - this.Text += $"{index}. " + paragraphBlock.ToMarkdownString() + ""; - } - else - { - this.Text += listBlock.BulletType + " " + paragraphBlock.ToMarkdownString() + ""; - } - } - else if (ininblock is ListBlock) - { - var listBlock2 = ininblock as ListBlock; - foreach (var inblock2 in listBlock2) - { - if (inblock2 is Markdig.Syntax.ListItemBlock) - { - var listItemBlock2 = inblock2 as Markdig.Syntax.ListItemBlock; - foreach (var ininblock2 in listItemBlock2) - { - //DumpBlock(ininblock); - if (ininblock2 is Markdig.Syntax.ParagraphBlock) - { - var paragraphBlock2 = ininblock2 as Markdig.Syntax.ParagraphBlock; - this.Text += " " + listBlock2.BulletType + " " + paragraphBlock2.ToMarkdownString() + "\n"; - } - } - } - } - } - } - } - } + this.Text += block.ToMarkdownString(); } } else if (block is Markdig.Extensions.Tables.Table) @@ -164,6 +106,10 @@ namespace AideDeJeuLib var tableBlock = block as Markdig.Extensions.Tables.Table; this.Text += "\n\n" + tableBlock.ToMarkdownString() + "\n\n"; } + else + { + this.Text += block.ToMarkdownString(); + } enumerator.MoveNext();