1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 06:56:10 +00:00

Extensions Markdig

This commit is contained in:
Yan Maniez 2018-07-21 09:18:25 +02:00
parent 5a715abf2d
commit 3ad3045b25
4 changed files with 121 additions and 4 deletions

View file

@ -0,0 +1,60 @@
// Copyright (c) Alexandre Mutel. All rights reserved.
// This file is licensed under the BSD-Clause 2 license.
// See the license.txt file in the project root for more information.
using Markdig.Syntax.Inlines;
namespace Markdig.Renderers.Normalize.Inlines
{
/// <summary>
/// A Normalize renderer for a <see cref="LinkInline"/>.
/// </summary>
/// <seealso cref="Markdig.Renderers.Normalize.NormalizeObjectRenderer{Markdig.Syntax.Inlines.LinkInline}" />
public class LinkInlineRendererEx : NormalizeObjectRenderer<LinkInline>
{
protected override void Write(NormalizeRenderer renderer, LinkInline link)
{
if (link.IsImage)
{
renderer.Write('!');
}
renderer.Write('[');
renderer.WriteChildren(link);
renderer.Write(']');
//if (link.Label != null)
//{
// var literal = link.FirstChild as LiteralInline;
// if (literal != null && literal.Content.Match(link.Label) && literal.Content.Length == link.Label.Length)
// {
// // collapsed reference and shortcut links
// if (!link.IsShortcut)
// {
// renderer.Write("[]");
// }
// }
// else
// {
// // full link
// renderer.Write('[').Write(link.Label).Write(']');
// }
//}
//else
//{
if (!string.IsNullOrEmpty(link.Url))
{
renderer.Write('(').Write(link.Url);
if (!string.IsNullOrEmpty(link.Title))
{
renderer.Write(" \"");
renderer.Write(link.Title.Replace(@"""", @"\"""));
renderer.Write("\"");
}
renderer.Write(')');
}
//}
}
}
}

View file

@ -9,6 +9,7 @@ using Markdig.Syntax.Inlines;
using Markdig.Parsers;
using System.IO;
using Markdig.Renderers.Normalize;
using Markdig.Renderers.Normalize.Inlines;
namespace AideDeJeu.Tools
{
@ -93,6 +94,9 @@ namespace AideDeJeu.Tools
using (var writer = new StringWriter())
{
var renderer = new NormalizeRenderer(writer);
renderer.ObjectRenderers.Remove(renderer.ObjectRenderers.FirstOrDefault(i => i is LinkInlineRenderer));
renderer.ObjectRenderers.Add(new LinkInlineRendererEx());
renderer.ObjectRenderers.Add(new TableRenderer());
pipeline.Setup(renderer);
renderer.Render(block);

View file

@ -0,0 +1,51 @@
// Copyright (c) Alexandre Mutel. All rights reserved.
// This file is licensed under the BSD-Clause 2 license.
// See the license.txt file in the project root for more information.
using System.Globalization;
using AideDeJeu.Tools;
using Markdig.Syntax;
namespace Markdig.Renderers.Normalize
{
/// <summary>
/// An Normalize renderer for a <see cref="TableBlock"/>.
/// </summary>
/// <seealso cref="Markdig.Renderers.Normalize.NormalizeObjectRenderer{Markdig.Extensions.Tables.Table}" />
public class TableRenderer : NormalizeObjectRenderer<Markdig.Extensions.Tables.Table>
{
protected override void Write(NormalizeRenderer renderer, Markdig.Extensions.Tables.Table obj)
{
foreach (Markdig.Extensions.Tables.TableRow row in obj)
{
renderer.Write("|");
foreach (Markdig.Extensions.Tables.TableCell cell in row)
{
foreach (Markdig.Syntax.ParagraphBlock block in cell)
{
renderer.Write(block.ToMarkdownString().Replace("\n", ""));
}
renderer.Write("|");
}
if (row.IsHeader)
{
renderer.Write("\n|");
for (int i = 0; i < row.Count; i++)
{
renderer.Write("---|");
}
}
renderer.Write("\n");
}
//renderer.Write("\n\n" + obj.ToMarkdownString() + "\n\n");
//var headingText = obj.Level > 0 && obj.Level <= 6
// ? HeadingTexts[obj.Level - 1]
// : new string('#', obj.Level);
//renderer.Write(headingText).Write(' ');
//renderer.WriteLeafInline(obj);
//renderer.FinishBlock(renderer.Options.EmptyLineAfterHeading);
}
}
}

View file

@ -56,8 +56,9 @@ namespace AideDeJeuLib
{
return;
}
var paragraphBlock = block as ParagraphBlock;
this.Text += paragraphBlock.ToMarkdownString() + "\n";
//var paragraphBlock = block as ParagraphBlock;
//this.Text += paragraphBlock.ToMarkdownString() + "\n";
this.Text += block.ToMarkdownString();
}
else if (block is ListBlock)
{
@ -103,8 +104,9 @@ namespace AideDeJeuLib
}
else if (block is Markdig.Extensions.Tables.Table)
{
var tableBlock = block as Markdig.Extensions.Tables.Table;
this.Text += "\n\n" + tableBlock.ToMarkdownString() + "\n\n";
this.Text += block.ToMarkdownString();
//var tableBlock = block as Markdig.Extensions.Tables.Table;
//this.Text += "\n\n" + tableBlock.ToMarkdownString() + "\n\n";
}
else
{