1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 06:56:10 +00:00
This commit is contained in:
Yan Maniez 2018-07-20 22:37:33 +02:00
parent 99efb04f4b
commit 2f4a0f1f77
3 changed files with 35 additions and 71 deletions

View file

@ -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;

View file

@ -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("(?<key>.*?): (?<value>.*)");
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<Tuple<string, Action<Generic, string>>>()
@ -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();