This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch bugfix/prevent-too-many-newlines-in-markdown-sink in repository https://gitbox.apache.org/repos/asf/maven-doxia.git
commit e21972b1ab20a3cf92c2e9a7f5ac8529c9a8058f Author: Konrad Windszus <[email protected]> AuthorDate: Mon Mar 9 20:16:49 2026 +0100 Only emit markupLineBreak if writer is not already in blank line. --- .../apache/maven/doxia/module/markdown/MarkdownSink.java | 4 +++- .../maven/doxia/module/markdown/MarkdownSinkTest.java | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java index fbc1d166..3a71b571 100644 --- a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java +++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java @@ -1300,7 +1300,9 @@ public class MarkdownSink extends Xhtml5BaseSink implements MarkdownMarkup { public void markupLineBreak(int indentLevel) { // not allowed in all contexts if (elementContextStack.element().isAllowsMarkupLinebreaks()) { - super.markupLineBreak(indentLevel); + if (!lineAwareWriter.isWriterAfterBlankLine()) { + super.markupLineBreak(indentLevel); + } } } diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownSinkTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownSinkTest.java index d161f327..ce9904d6 100644 --- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownSinkTest.java +++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownSinkTest.java @@ -631,6 +631,18 @@ class MarkdownSinkTest extends AbstractSinkTest { assertEquals(expected, getSinkContent(), "Wrong metadata section"); } + @Test + void insignificantWhitespaceAfterBlockElement() { + try (Sink sink = getSink()) { + sink.paragraph(); + sink.text("paragraph"); + sink.paragraph_(); + sink.markupLineBreak(4); // this should be ignored as paragraph_() in markdown is already followed by a blank line + sink.text("text after insignificant whitespace"); + } + String expected = "paragraph" + EOL + EOL + "text after insignificant whitespace"; + assertEquals(expected, getSinkContent()); + } @Test void listItemsContainingInsignificantWhitespace() { try (Sink sink = getSink()) { @@ -676,4 +688,5 @@ class MarkdownSinkTest extends AbstractSinkTest { + EOL + EOL; assertEquals(expected, getSinkContent()); } + }
