Render images server side. Remove JS hack to get images to render.
This commit is contained in:
parent
5d67e92245
commit
3eca70a102
9 changed files with 107 additions and 35 deletions
37
Website.Markdig.Extensions/BlogImageRenderer.cs
Normal file
37
Website.Markdig.Extensions/BlogImageRenderer.cs
Normal file
|
@ -0,0 +1,37 @@
|
|||
using Markdig.Renderers;
|
||||
using Markdig.Renderers.Html;
|
||||
using Markdig.Renderers.Html.Inlines;
|
||||
using Markdig.Syntax.Inlines;
|
||||
|
||||
namespace Website.Markdig.Extensions {
|
||||
public class BlogImageRenderer : HtmlObjectRenderer<LinkInline> {
|
||||
private readonly LinkInlineRenderer _baseRenderer;
|
||||
|
||||
public BlogImageRenderer(LinkInlineRenderer baseRenderer) {
|
||||
_baseRenderer = baseRenderer;
|
||||
}
|
||||
|
||||
protected override void Write(HtmlRenderer renderer, LinkInline link) {
|
||||
if (!link.IsImage) {
|
||||
_baseRenderer.Write(renderer, link);
|
||||
return;
|
||||
}
|
||||
|
||||
renderer.Write(@"<div class=""blog-post__image-container--container"">");
|
||||
renderer.Write(@"<div class=""blog-post__image-container"">");
|
||||
renderer.Write($@"<img src=""{link.Url}"" alt=""");
|
||||
var wasEnableHtmlForInline = renderer.EnableHtmlForInline;
|
||||
renderer.EnableHtmlForInline = false;
|
||||
renderer.WriteChildren(link);
|
||||
renderer.EnableHtmlForInline = wasEnableHtmlForInline;
|
||||
renderer.Write(@""" class=""blog-post__image-container--image"">");
|
||||
renderer.Write(@"<span class=""blog-post__image-container--tagline"">");
|
||||
renderer.EnableHtmlForInline = false;
|
||||
renderer.WriteChildren(link);
|
||||
renderer.EnableHtmlForInline = wasEnableHtmlForInline;
|
||||
renderer.Write(@"</span>");
|
||||
renderer.Write(@"</div>");
|
||||
renderer.Write(@"</div>");
|
||||
}
|
||||
}
|
||||
}
|
22
Website.Markdig.Extensions/BlogImageRendererExtension.cs
Normal file
22
Website.Markdig.Extensions/BlogImageRendererExtension.cs
Normal file
|
@ -0,0 +1,22 @@
|
|||
using Markdig;
|
||||
using Markdig.Renderers;
|
||||
using Markdig.Renderers.Html;
|
||||
using Markdig.Renderers.Html.Inlines;
|
||||
using Markdig.Syntax.Inlines;
|
||||
|
||||
namespace Website.Markdig.Extensions {
|
||||
public class BlogImageRendererExtension : IMarkdownExtension {
|
||||
public void Setup(MarkdownPipelineBuilder pipeline) {
|
||||
|
||||
}
|
||||
|
||||
public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer) {
|
||||
var htmlRenderer = renderer as HtmlRenderer;
|
||||
var originalRenderer = htmlRenderer.ObjectRenderers.FindExact<LinkInlineRenderer>();
|
||||
if (originalRenderer != null)
|
||||
htmlRenderer.ObjectRenderers.Remove(originalRenderer);
|
||||
var blogImageRenderer = new BlogImageRenderer(originalRenderer);
|
||||
htmlRenderer.ObjectRenderers.AddIfNotAlready(blogImageRenderer);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
using Markdig;
|
||||
|
||||
namespace Website.Markdig.Extensions {
|
||||
public static class MarkdownPipelineBuilderExtensions {
|
||||
public static MarkdownPipelineBuilder UseBlogImageRenderer(this MarkdownPipelineBuilder pipeline) {
|
||||
pipeline.Extensions.Add(new BlogImageRendererExtension());
|
||||
return pipeline;
|
||||
}
|
||||
}
|
||||
}
|
11
Website.Markdig.Extensions/Website.Markdig.Extensions.csproj
Normal file
11
Website.Markdig.Extensions/Website.Markdig.Extensions.csproj
Normal file
|
@ -0,0 +1,11 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="markdig" Version="0.18.3" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
Loading…
Add table
Add a link
Reference in a new issue