Created
January 22, 2019 00:15
-
-
Save TerribleDev/6278f98da75e7e96d467c6c72ba61e7a to your computer and use it in GitHub Desktop.
A markdig extension so add target blank to absolute urls
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TargetLinkExtension : IMarkdownExtension | |
{ | |
public void Setup(MarkdownPipelineBuilder pipeline) | |
{ | |
} | |
public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer) | |
{ | |
var htmlRenderer = renderer as HtmlRenderer; | |
if (htmlRenderer != null) | |
{ | |
var inlineRenderer = htmlRenderer.ObjectRenderers.FindExact<LinkInlineRenderer>(); | |
if (inlineRenderer != null) | |
{ | |
inlineRenderer.TryWriters.Remove(TryLinkInlineRenderer); | |
inlineRenderer.TryWriters.Add(TryLinkInlineRenderer); | |
} | |
} | |
} | |
private bool TryLinkInlineRenderer(HtmlRenderer renderer, LinkInline linkInline) | |
{ | |
if (linkInline.Url == null) | |
{ | |
return false; | |
} | |
Uri uri; | |
// Only process absolute Uri | |
if (!Uri.TryCreate(linkInline.Url, UriKind.RelativeOrAbsolute, out uri) || !uri.IsAbsoluteUri) | |
{ | |
return false; | |
} | |
RenderTargetAttribute(uri, renderer, linkInline); | |
return false; | |
} | |
private void RenderTargetAttribute(Uri uri, HtmlRenderer renderer, LinkInline linkInline) | |
{ | |
linkInline.SetAttributes(new HtmlAttributes() { Properties = new List<KeyValuePair<string, string>>() { new KeyValuePair<string, string>("target", "_blank") } }); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this for easy builder usage: