diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..e69de29 diff --git a/src/TerribleDev.Blog.Web/Factories/BlogFactory.cs b/src/TerribleDev.Blog.Web/Factories/BlogFactory.cs index 1efd8d4..bb591d7 100644 --- a/src/TerribleDev.Blog.Web/Factories/BlogFactory.cs +++ b/src/TerribleDev.Blog.Web/Factories/BlogFactory.cs @@ -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 postImages = new List(); var pipeline = new MarkdownPipelineBuilder() + .Use() .Use() - .Use(new ImageRecorder(ref postImages)) + // .Use(new ImageRecorder(ref postImages)) .UseMediaLinks() .UseEmojiAndSmiley() .Build(); diff --git a/src/TerribleDev.Blog.Web/MarkExtension/ImageRecorder.cs b/src/TerribleDev.Blog.Web/MarkExtension/ImageRecorder.cs index 941336c..7b2116c 100644 --- a/src/TerribleDev.Blog.Web/MarkExtension/ImageRecorder.cs +++ b/src/TerribleDev.Blog.Web/MarkExtension/ImageRecorder.cs @@ -50,7 +50,7 @@ namespace TerribleDev.Blog.Web.MarkExtension return false; } this.images.Add(linkInline.Url); - return true; + return false; } } } diff --git a/src/TerribleDev.Blog.Web/MarkExtension/PictureInline.cs b/src/TerribleDev.Blog.Web/MarkExtension/PictureInline.cs index 8779b29..60b370c 100644 --- a/src/TerribleDev.Blog.Web/MarkExtension/PictureInline.cs +++ b/src/TerribleDev.Blog.Web/MarkExtension/PictureInline.cs @@ -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 + 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()) { - base.Write(renderer, link); + htmlRenderer.ObjectRenderers.ReplaceOrAdd(new PictureInlineRenderer()); } - - } } } \ No newline at end of file diff --git a/src/TerribleDev.Blog.Web/MarkExtension/PictureInlineRenderer.cs b/src/TerribleDev.Blog.Web/MarkExtension/PictureInlineRenderer.cs new file mode 100644 index 0000000..5ce13c7 --- /dev/null +++ b/src/TerribleDev.Blog.Web/MarkExtension/PictureInlineRenderer.cs @@ -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 +{ + // + /// A HTML renderer for a . + /// + /// + public class PictureInlineRenderer : LinkInlineRenderer + { + private void WriteImageTag(HtmlRenderer renderer, LinkInline link, string suffix, string type = null) + { + renderer.Write(string.IsNullOrWhiteSpace(type) ? $"\"");"); + } + } + protected override void Write(HtmlRenderer renderer, LinkInline link) + { + if (!link.IsImage) + { + base.Write(renderer, link); + return; + } + + + renderer.Write(""); + WriteImageTag(renderer, link, ".webp", "image/webp"); + WriteImageTag(renderer, link, string.Empty); + renderer.Write(""); + + } + } +} \ No newline at end of file diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Commiting-a-new-file-to-github-through-the-github-api/thumbnail.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Commiting-a-new-file-to-github-through-the-github-api/thumbnail.png.webp new file mode 100644 index 0000000..7786351 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Commiting-a-new-file-to-github-through-the-github-api/thumbnail.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Compressing-images-with-tinypng/2.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Compressing-images-with-tinypng/2.png.webp new file mode 100644 index 0000000..7a840c5 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Compressing-images-with-tinypng/2.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Compressing-images-with-tinypng/3.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Compressing-images-with-tinypng/3.png.webp new file mode 100644 index 0000000..5820413 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Compressing-images-with-tinypng/3.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/azure1.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/azure1.png.webp new file mode 100644 index 0000000..56d2d82 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/azure1.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/slack1.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/slack1.png.webp new file mode 100644 index 0000000..af46ef4 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/slack1.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/slack2.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/slack2.png.webp new file mode 100644 index 0000000..b020460 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Creating-a-slack-slash-command-with-0-code-using-Azure-Logic-Apps/slack2.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/1.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/1.PNG.webp new file mode 100644 index 0000000..92f3de1 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/1.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/2.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/2.PNG.webp new file mode 100644 index 0000000..b5703a8 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/2.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/3.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/3.PNG.webp new file mode 100644 index 0000000..c2ed543 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/3.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/4.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/4.PNG.webp new file mode 100644 index 0000000..80f6f5f Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/4.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/5.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/5.PNG.webp new file mode 100644 index 0000000..987e298 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/5.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/6.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/6.PNG.webp new file mode 100644 index 0000000..4e82d88 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/6.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/7.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/7.PNG.webp new file mode 100644 index 0000000..8b79049 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Deploying-a-react-app-to-azure-blob-storage-websites-with-azure-devops/7.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Exploring-the-dotnet-cli/mvc-project.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Exploring-the-dotnet-cli/mvc-project.PNG.webp new file mode 100644 index 0000000..f998ee1 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Exploring-the-dotnet-cli/mvc-project.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Making-alexa-skills-in-net/dialog.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Making-alexa-skills-in-net/dialog.PNG.webp new file mode 100644 index 0000000..c8d64af Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Making-alexa-skills-in-net/dialog.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Migrating-Ghost-blog-to-hexo/thumbnail.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Migrating-Ghost-blog-to-hexo/thumbnail.png.webp new file mode 100644 index 0000000..1af7ac0 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Migrating-Ghost-blog-to-hexo/thumbnail.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/StatsN-A-modern-statsd-client-for-dotnet-core/StatsNthumbnail.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/StatsN-A-modern-statsd-client-for-dotnet-core/StatsNthumbnail.png.webp new file mode 100644 index 0000000..059cd08 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/StatsN-A-modern-statsd-client-for-dotnet-core/StatsNthumbnail.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Taking-time-away/thumbnail.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Taking-time-away/thumbnail.PNG.webp new file mode 100644 index 0000000..e51b4f8 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Taking-time-away/thumbnail.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/VS-17-and-dotnet-core-tools-Today-will-be-a-historic-day/vs.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/VS-17-and-dotnet-core-tools-Today-will-be-a-historic-day/vs.PNG.webp new file mode 100644 index 0000000..e8a297d Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/VS-17-and-dotnet-core-tools-Today-will-be-a-historic-day/vs.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/VS-2017-best-extensions-on-launch/extmgr.PNG.webp b/src/TerribleDev.Blog.Web/wwwroot/img/VS-2017-best-extensions-on-launch/extmgr.PNG.webp new file mode 100644 index 0000000..666e1ce Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/VS-2017-best-extensions-on-launch/extmgr.PNG.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-javascript-bundle/1.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-javascript-bundle/1.png.webp new file mode 100644 index 0000000..f6a67f5 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-javascript-bundle/1.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/1.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/1.png.webp new file mode 100644 index 0000000..0ccedec Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/1.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/2.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/2.png.webp new file mode 100644 index 0000000..1d965ea Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/2.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/3.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/3.png.webp new file mode 100644 index 0000000..0743c62 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Visualizing-your-react-redux-performance-bottlenecks/3.png.webp differ diff --git a/src/TerribleDev.Blog.Web/wwwroot/img/Writing-an-animated-flyout-hamburger-menu/menu.png.webp b/src/TerribleDev.Blog.Web/wwwroot/img/Writing-an-animated-flyout-hamburger-menu/menu.png.webp new file mode 100644 index 0000000..81f8054 Binary files /dev/null and b/src/TerribleDev.Blog.Web/wwwroot/img/Writing-an-animated-flyout-hamburger-menu/menu.png.webp differ