diff --git a/samples/MudBlazor.Markdown.Core/MudBlazor.Markdown.Core.csproj b/samples/MudBlazor.Markdown.Core/MudBlazor.Markdown.Core.csproj index 87b6751..8f3cd9f 100644 --- a/samples/MudBlazor.Markdown.Core/MudBlazor.Markdown.Core.csproj +++ b/samples/MudBlazor.Markdown.Core/MudBlazor.Markdown.Core.csproj @@ -8,7 +8,7 @@ - + diff --git a/samples/WebAssembly/MudBlazor.Markdown.Wasm.csproj b/samples/WebAssembly/MudBlazor.Markdown.Wasm.csproj index 776ab60..d65787c 100644 --- a/samples/WebAssembly/MudBlazor.Markdown.Wasm.csproj +++ b/samples/WebAssembly/MudBlazor.Markdown.Wasm.csproj @@ -7,10 +7,10 @@ - - + + - + diff --git a/src/MudBlazor.Markdown/MudMarkdown.razor.cs b/src/MudBlazor.Markdown/MudMarkdown.razor.cs index 904f275..281981b 100644 --- a/src/MudBlazor.Markdown/MudMarkdown.razor.cs +++ b/src/MudBlazor.Markdown/MudMarkdown.razor.cs @@ -289,10 +289,17 @@ protected virtual void RenderInlines(RenderTreeBuilder builder1, ref int element builder1.AddMarkupContent(elementIndex1++, x.Tag); break; } - case LineBreakInline: + case LineBreakInline x: { - builder1.OpenElement(elementIndex1++, "br"); - builder1.CloseElement(); + if (x.IsHard) + { + builder1.OpenElement(elementIndex1++, "br"); + builder1.CloseElement(); + } + else + { + builder1.AddContent(elementIndex1++, " "); + } break; } case CodeInline x: diff --git a/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentDetailsShould.cs b/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentDetailsShould.cs index 16cbc9f..a60983e 100644 --- a/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentDetailsShould.cs +++ b/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentDetailsShould.cs @@ -31,7 +31,7 @@ Another text
-

Some hidden text
Another text

+

Some hidden text Another text

@@ -45,7 +45,7 @@ Another text } [Fact] - public void RenderDetailsSummaryMultiLine() + public void RenderDetailsSummaryMultiline() { const string value = """ @@ -75,7 +75,7 @@ Another text
-

Some hidden text
Another text

+

Some hidden text Another text

@@ -184,7 +184,7 @@ Another text
-

Some hidden text
Another text

+

Some hidden text Another text

diff --git a/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentPropShould.cs b/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentPropShould.cs index 98f16e3..b43a9db 100644 --- a/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentPropShould.cs +++ b/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentPropShould.cs @@ -237,11 +237,9 @@ public void OverrideAllLinks() absolute -
relative -
id diff --git a/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentShould.cs b/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentShould.cs index b16d6b0..ce4a487 100644 --- a/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentShould.cs +++ b/tests/MudBlazor.Markdown.Tests/Components/MarkdownComponentTests/MarkdownComponentShould.cs @@ -75,9 +75,49 @@ public void RenderInvalidEmphasis(string emphasisDelimiter) [Theory] [InlineData("\r\n")] [InlineData("\n")] - public void ReplaceNewLineSymbols(string newLine) + public void RenderBreakSoft(string newLine) { var value = "line1" + newLine + "line2"; + const string expected = + """ +
+

+ line1 line2 +

+
+ """; + + using var fixture = CreateFixture(value); + fixture.MarkupMatches(expected); + } + + [Theory] + [InlineData("\r\n")] + [InlineData("\n")] + public void RenderBreakHard(string newLine) + { + var value = "line1" + newLine + newLine + "line2"; + const string expected = + """ +
+

line1

+

line2

+
+ """; + + using var fixture = CreateFixture(value); + fixture.MarkupMatches(expected); + } + + [Fact] + public void RenderBreakHardWithSpaces() + { + const string value = + """ + line1 + line2 + """; + const string expected = """
@@ -91,6 +131,29 @@ public void ReplaceNewLineSymbols(string newLine) fixture.MarkupMatches(expected); } + [Theory] + [InlineData("\r\n")] + [InlineData("\n")] + public void RenderBreakHardWithPipeline(string newLine) + { + var value = "line1" + newLine + "line2"; + const string expected = + """ +
+

+ line1
line2 +

+
+ """; + + var markdownPipeline = new MarkdownPipelineBuilder() + .UseSoftlineBreakAsHardlineBreak() + .Build(); + + using var fixture = CreateFixture(value, markdownPipeline: markdownPipeline); + fixture.MarkupMatches(expected); + } + [Fact] public void RenderExternalLink() {