diff --git a/.gitignore b/.gitignore index b3bc6e78a..1369d1dd3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ *.userosscache *.sln.docstates *.nuget.props +*.nuget.targets # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs diff --git a/changelog.md b/changelog.md index 8c149a9d9..bb7d8721c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # Changelog +## WIP +- Fix regression when escaping HTML characters ([(PR #340)](https://github.com/lunet-io/markdig/pull/340)) + ## 0.17.0 (10 May 2019) - Update to latest CommonMark specs 0.29 ([(PR #327)](https://github.com/lunet-io/markdig/pull/327)) - Add `AutoLinkOptions` with `OpenInNewWindow`, `UseHttpsForWWWLinks` ([(PR #327)](https://github.com/lunet-io/markdig/pull/327)) diff --git a/src/Markdig.Tests/MiscTests.cs b/src/Markdig.Tests/MiscTests.cs index 826108c82..ef4685c42 100644 --- a/src/Markdig.Tests/MiscTests.cs +++ b/src/Markdig.Tests/MiscTests.cs @@ -8,6 +8,14 @@ namespace Markdig.Tests { public class MiscTests { + [Test] + public void TestAltTextIsCorrectlyEscaped() + { + TestParser.TestSpec( + @"![This is image alt text with quotation ' and double quotation ""hello"" world](girl.png)", + @"

"); + } + [Test] public void TestChangelogPRLinksMatchDescription() { diff --git a/src/Markdig/Markdown.cs b/src/Markdig/Markdown.cs index d09ac8011..0dbea434a 100644 --- a/src/Markdig/Markdown.cs +++ b/src/Markdig/Markdown.cs @@ -184,7 +184,8 @@ public static MarkdownDocument ToPlainText(string markdown, TextWriter writer, M var renderer = new HtmlRenderer(writer) { EnableHtmlForBlock = false, - EnableHtmlForInline = false + EnableHtmlForInline = false, + EnableHtmlEscape = false, }; pipeline.Setup(renderer); diff --git a/src/Markdig/Renderers/Html/Inlines/HtmlEntityInlineRenderer.cs b/src/Markdig/Renderers/Html/Inlines/HtmlEntityInlineRenderer.cs index 1d83e6cec..3e6eb8dc6 100644 --- a/src/Markdig/Renderers/Html/Inlines/HtmlEntityInlineRenderer.cs +++ b/src/Markdig/Renderers/Html/Inlines/HtmlEntityInlineRenderer.cs @@ -13,7 +13,7 @@ public class HtmlEntityInlineRenderer : HtmlObjectRenderer { protected override void Write(HtmlRenderer renderer, HtmlEntityInline obj) { - if (renderer.EnableHtmlForInline) + if (renderer.EnableHtmlEscape) { renderer.WriteEscape(obj.Transcoded); } diff --git a/src/Markdig/Renderers/Html/Inlines/LiteralInlineRenderer.cs b/src/Markdig/Renderers/Html/Inlines/LiteralInlineRenderer.cs index 6769bc913..a9e7b1fdc 100644 --- a/src/Markdig/Renderers/Html/Inlines/LiteralInlineRenderer.cs +++ b/src/Markdig/Renderers/Html/Inlines/LiteralInlineRenderer.cs @@ -13,13 +13,13 @@ public class LiteralInlineRenderer : HtmlObjectRenderer { protected override void Write(HtmlRenderer renderer, LiteralInline obj) { - if (renderer.EnableHtmlForInline) + if (renderer.EnableHtmlEscape) { - renderer.WriteEscape(obj.Content); + renderer.WriteEscape(ref obj.Content); } else { - renderer.Write(obj.Content); + renderer.Write(ref obj.Content); } } }