diff --git a/Directory.Packages.props b/Directory.Packages.props index a8018c3..1bdb281 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,9 +10,9 @@ - - - + + + diff --git a/src/Cobalt.Core/Text/HtmlMarkdown.cs b/src/Cobalt.Core/Text/HtmlMarkdown.cs index 806a752..35078fe 100644 --- a/src/Cobalt.Core/Text/HtmlMarkdown.cs +++ b/src/Cobalt.Core/Text/HtmlMarkdown.cs @@ -14,9 +14,11 @@ public static partial class HtmlMarkdown { private static readonly ReverseMarkdown.Converter ToMd = new(new ReverseMarkdown.Config { - UnknownTags = ReverseMarkdown.Config.UnknownTagsOption.PassThrough, + // ReverseMarkdown 6 moved these onto nested option objects (the old flat + // UnknownTags/RemoveComments are [Obsolete]); GithubFlavored stayed top-level. + Tags = { Unknown = ReverseMarkdown.Config.UnknownTagsOption.PassThrough }, GithubFlavored = true, - RemoveComments = true, + Formatting = { RemoveComments = true }, }); private static readonly MarkdownPipeline MdPipeline = diff --git a/tests/Cobalt.Core.Tests/Text/HtmlMarkdownTests.cs b/tests/Cobalt.Core.Tests/Text/HtmlMarkdownTests.cs index bf72045..fc7bdc2 100644 --- a/tests/Cobalt.Core.Tests/Text/HtmlMarkdownTests.cs +++ b/tests/Cobalt.Core.Tests/Text/HtmlMarkdownTests.cs @@ -28,6 +28,18 @@ public void Empty_And_Null_Html_Become_Empty_Markdown() Assert.Equal("", HtmlMarkdown.ToMarkdown("")); } + [Fact] + public void Html_To_Markdown_Strips_Comments_And_Passes_Unknown_Tags_Through() + { + // Pins the two options carried across the ReverseMarkdown 6 config API migration: + // Formatting.RemoveComments strips HTML comments, and Tags.Unknown = PassThrough keeps an + // unsupported tag verbatim (so a lossy round-trip stays visible) rather than dropping it. + var md = HtmlMarkdown.ToMarkdown("

keep this

inner text"); + + Assert.DoesNotContain("drop me", md); // RemoveComments strips the comment + Assert.Contains("inner text", md); // PassThrough keeps the unknown tag as-is + } + [Fact] public void Simple_Content_Round_Trips_Cleanly() {