mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 06:56:10 +00:00
Renderer
This commit is contained in:
parent
99efb04f4b
commit
2f4a0f1f77
3 changed files with 35 additions and 71 deletions
|
|
@ -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;
|
||||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue