This commit is contained in:
tparnell
2019-02-05 23:00:12 -05:00
parent aa6ed52d93
commit 53b8b448da
30 changed files with 80 additions and 10 deletions

0
Readme.md Normal file
View File

View File

@@ -8,6 +8,7 @@ using YamlDotNet.Serialization;
using Microsoft.AspNetCore.Html;
using Markdig;
using TerribleDev.Blog.Web.MarkExtension.TerribleDev.Blog.Web.ExternalLinkParser;
using TerribleDev.Blog.Web.MarkExtension;
namespace TerribleDev.Blog.Web
{
@@ -44,8 +45,9 @@ namespace TerribleDev.Blog.Web
var markdownText = string.Join("", splitFile.Skip(1));
List<string> postImages = new List<string>();
var pipeline = new MarkdownPipelineBuilder()
.Use<PictureInline>()
.Use<TargetLinkExtension>()
.Use<ImageRecorder>(new ImageRecorder(ref postImages))
// .Use<ImageRecorder>(new ImageRecorder(ref postImages))
.UseMediaLinks()
.UseEmojiAndSmiley()
.Build();

View File

@@ -50,7 +50,7 @@ namespace TerribleDev.Blog.Web.MarkExtension
return false;
}
this.images.Add(linkInline.Url);
return true;
return false;
}
}
}

View File

@@ -1,18 +1,27 @@
using Markdig.Renderers.Html;
using Markdig.Syntax.Inlines;
using System;
using Markdig;
using Markdig.Renderers;
using Markdig.Renderers.Html.Inlines;
namespace TerribleDev.Blog.Web.MarkExtension
{
public class PictureInlineRenderer : HtmlObjectRenderer<LinkInline>
public class PictureInline : IMarkdownExtension
{
protected override void Write(HtmlRenderer renderer, LinkInline link)
public PictureInline()
{
if(!link.IsImage)
}
public void Setup(MarkdownPipelineBuilder pipeline)
{
}
public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer)
{
var htmlRenderer = renderer as HtmlRenderer;
if (htmlRenderer != null && !htmlRenderer.ObjectRenderers.Contains<PictureInlineRenderer>())
{
base.Write(renderer, link);
htmlRenderer.ObjectRenderers.ReplaceOrAdd<LinkInlineRenderer>(new PictureInlineRenderer());
}
}
}
}

View File

@@ -0,0 +1,59 @@
using System;
using Markdig.Renderers;
using Markdig.Renderers.Html;
using Markdig.Renderers.Html.Inlines;
using Markdig.Syntax.Inlines;
using System.Linq;
using System.Collections.Generic;
namespace TerribleDev.Blog.Web.MarkExtension
{
// <summary>
/// A HTML renderer for a <see cref="LinkInline"/>.
/// </summary>
/// <seealso cref="Markdig.Renderers.Html.HtmlObjectRenderer{Markdig.Syntax.Inlines.LinkInline}" />
public class PictureInlineRenderer : LinkInlineRenderer
{
private void WriteImageTag(HtmlRenderer renderer, LinkInline link, string suffix, string type = null)
{
renderer.Write(string.IsNullOrWhiteSpace(type) ? $"<img src=\"" : $"<source type=\"{type}\" srcset=\"");
var escapeUrl = link.GetDynamicUrl != null ? link.GetDynamicUrl() ?? link.Url : link.Url;
renderer.WriteEscapeUrl($"{escapeUrl}{suffix}");
renderer.Write("\"");
renderer.WriteAttributes(link);
// if (renderer.EnableHtmlForInline)
// {
// renderer.Write(" alt=\"");
// }
// var wasEnableHtmlForInline = renderer.EnableHtmlForInline;
// renderer.EnableHtmlForInline = false;
// renderer.WriteChildren(link);
// renderer.EnableHtmlForInline = wasEnableHtmlForInline;
// if (renderer.EnableHtmlForInline)
// {
// renderer.Write("\"");
// }
if (renderer.EnableHtmlForInline)
{
renderer.Write(" />");
}
}
protected override void Write(HtmlRenderer renderer, LinkInline link)
{
if (!link.IsImage)
{
base.Write(renderer, link);
return;
}
renderer.Write("<picture>");
WriteImageTag(renderer, link, ".webp", "image/webp");
WriteImageTag(renderer, link, string.Empty);
renderer.Write("</picture>");
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB