You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2023/02/13 11:30:02 UTC
[maven-doxia] 02/02: [DOXIA-694] Too many line separators
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch bugfix/newlines
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git
commit f729013730149dfd328aa67c1d56d24cbd0bb46f
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Mon Feb 13 12:29:52 2023 +0100
[DOXIA-694] Too many line separators
---
.../doxia/module/markdown/MarkdownMarkup.java | 12 +-
.../maven/doxia/module/markdown/MarkdownSink.java | 409 +++++++--------------
.../doxia/module/markdown/MarkdownSinkTest.java | 40 +-
.../src/test/resources/test.md | 5 +
4 files changed, 160 insertions(+), 306 deletions(-)
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownMarkup.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownMarkup.java
index 854bfa2e..91b56cf0 100644
--- a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownMarkup.java
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownMarkup.java
@@ -36,8 +36,7 @@ public interface MarkdownMarkup extends TextMarkup {
String COMMENT_START = "<!-- ";
String COMMENT_END = " -->";
- /** page break markup char: '\f' */
- char PAGE_BREAK = '\f';
+ String BLANK_LINE = EOL + EOL;
// ----------------------------------------------------------------------
// Markup syntax
@@ -58,8 +57,8 @@ public interface MarkdownMarkup extends TextMarkup {
/** Syntax for the header start: "---" */
String METADATA_MARKUP = StringUtils.repeat(String.valueOf(MINUS), 3);
- /** Syntax for the horizontal rule: "========" */
- String HORIZONTAL_RULE_MARKUP = StringUtils.repeat(String.valueOf(EQUAL), 8);
+ /** Syntax for the horizontal rule: "***" */
+ String HORIZONTAL_RULE_MARKUP = "***";
/** Syntax for the italic style end: "_" */
String ITALIC_END_MARKUP = "_";
@@ -92,10 +91,7 @@ public interface MarkdownMarkup extends TextMarkup {
String VERBATIM_START_MARKUP = "```";
/** Syntax for the non breaking space: "\ " */
- String NON_BREAKING_SPACE_MARKUP = String.valueOf(BACKSLASH) + SPACE;
-
- /** Syntax for the page break: "\f" */
- String PAGE_BREAK_MARKUP = String.valueOf(PAGE_BREAK);
+ String NON_BREAKING_SPACE_MARKUP = "&npsp;";
/** Syntax for the section title start: "#" */
String SECTION_TITLE_START_MARKUP = "#";
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 821c1bc4..acc15158 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
@@ -93,6 +93,9 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
/** The writer to use. */
private final PrintWriter writer;
+ /** {@code true} when last written character in {@link #writer} was a line separator, or writer is still at the beginning */
+ private boolean isWriterAtStartOfNewLine;
+
/** justification of table cells. */
private int[] cellJustif;
@@ -102,8 +105,8 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
/** is header row */
private boolean headerRow;
- /** listNestingIndent. */
- private String listNestingIndent;
+ /** listNestingLevel, 0 outside the list, 1 for the top-level list, 2 for a nested list, 3 for a list nested inside a nested list, .... */
+ private int listNestingLevel;
/** listStyles. */
private final Stack<String> listStyles;
@@ -122,6 +125,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
*/
protected MarkdownSink(Writer writer) {
this.writer = new PrintWriter(writer);
+ isWriterAtStartOfNewLine = true;
this.listStyles = new Stack<>();
init();
@@ -145,16 +149,14 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
this.headerFlag = headFlag;
}
- /**
- * {@inheritDoc}
- */
+ @Override
protected void init() {
super.init();
resetBuffer();
this.tableCaptionBuffer = new StringBuilder();
- this.listNestingIndent = "";
+ this.listNestingLevel = 0;
this.authors = new LinkedList<>();
this.title = null;
@@ -189,9 +191,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
tableCaptionBuffer = new StringBuilder();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void head() {
boolean startFlag = this.startFlag;
@@ -201,9 +201,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
this.startFlag = startFlag;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void head_() {
headerFlag = false;
@@ -224,12 +222,10 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
if (date != null) {
write("date: " + date + EOL);
}
- write(METADATA_MARKUP + EOL);
+ write(METADATA_MARKUP + BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void title_() {
if (buffer.length() > 0) {
title = buffer.toString();
@@ -237,9 +233,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void author_() {
if (buffer.length() > 0) {
authors.add(buffer.toString());
@@ -247,9 +241,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void date_() {
if (buffer.length() > 0) {
date = buffer.toString();
@@ -257,154 +249,90 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /**
- * {@inheritDoc}
- */
- public void section1_() {
- write(EOL);
- }
-
- /**
- * {@inheritDoc}
- */
- public void section2_() {
- write(EOL);
- }
-
- /**
- * {@inheritDoc}
- */
- public void section3_() {
- write(EOL);
- }
-
- /**
- * {@inheritDoc}
- */
- public void section4_() {
- write(EOL);
- }
-
- /**
- * {@inheritDoc}
- */
- public void section5_() {
- write(EOL);
- }
-
private void sectionTitle(int level) {
- write(EOL + StringUtils.repeat(SECTION_TITLE_START_MARKUP, level) + SPACE);
+ write(StringUtils.repeat(SECTION_TITLE_START_MARKUP, level) + SPACE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle1() {
sectionTitle(1);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle1_() {
- write(EOL + EOL);
+ write(BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle2() {
sectionTitle(2);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle2_() {
- write(EOL + EOL);
+ write(BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle3() {
sectionTitle(3);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle3_() {
- write(EOL + EOL);
+ write(BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle4() {
sectionTitle(4);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle4_() {
- write(EOL + EOL);
+ write(BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle5() {
sectionTitle(5);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void sectionTitle5_() {
- write(EOL + EOL);
+ write(BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void list() {
- listNestingIndent += " ";
+ listNestingLevel++;
listStyles.push(LIST_UNORDERED_ITEM_START_MARKUP);
- write(EOL);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void list_() {
- write(EOL);
- listNestingIndent = StringUtils.chomp(listNestingIndent, " ");
+ listNestingLevel--;
+ if (listNestingLevel == 0) {
+ write(EOL); // end add blank line (together with the preceding EOL of the item) only in case this was not
+ // nested
+ }
listStyles.pop();
itemFlag = false;
}
- /**
- * {@inheritDoc}
- */
@Override
public void listItem() {
orderedOrUnorderedListItem();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void listItem_() {
orderedOrUnorderedListItem_();
}
/** {@inheritDoc} */
public void numberedList(int numbering) {
- listNestingIndent += " ";
- //write(EOL);
-
+ listNestingLevel++;
// markdown only supports decimal numbering
if (numbering != NUMBERING_DECIMAL) {
LOGGER.warn(
@@ -416,117 +344,94 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
listStyles.push(style);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void numberedList_() {
- write(EOL);
- listNestingIndent = StringUtils.chomp(listNestingIndent, " ");
+ listNestingLevel--;
+ if (listNestingLevel == 0) {
+ write(EOL); // end add blank line (together with the preceding EOL of the item) only in case this was not
+ // nested
+ }
listStyles.pop();
itemFlag = false;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void numberedListItem() {
orderedOrUnorderedListItem();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void numberedListItem_() {
orderedOrUnorderedListItem_();
}
private void orderedOrUnorderedListItem() {
- String style = listStyles.peek();
- write(EOL + listNestingIndent + style + SPACE);
+ write(getListPrefix());
itemFlag = true;
}
private void orderedOrUnorderedListItem_() {
- write(EOL);
+ ensureBeginningOfLine();
itemFlag = false;
}
- /**
- * {@inheritDoc}
- */
+ private String getListPrefix() {
+ StringBuilder prefix = new StringBuilder();
+ for (int indent = 1; indent < listNestingLevel; indent++) {
+ prefix.append(" "); // 4 spaces per indentation level
+ }
+ prefix.append(listStyles.peek());
+ prefix.append(SPACE);
+ return prefix.toString();
+ }
+
+ @Override
public void definitionList() {
- listNestingIndent += " ";
- listStyles.push("");
- write(EOL);
+ LOGGER.warn("Definition list not natively supported in Markdown, rendering HTML instead");
+ write("<dl>" + EOL);
}
- /**
- * {@inheritDoc}
- */
public void definitionList_() {
- write(EOL);
- listNestingIndent = StringUtils.chomp(listNestingIndent, " ");
- listStyles.pop();
- itemFlag = false;
+ verbatimFlag = true;
+ write("</dl>" + BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
public void definedTerm() {
- write(EOL + " [");
+ write("<dt>");
+ verbatimFlag = false;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void definedTerm_() {
- write("] ");
+ write("</dt>" + EOL);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void definition() {
- itemFlag = true;
+ write("<dd>");
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void definition_() {
- write(EOL);
- itemFlag = false;
+ write("</dd>" + EOL);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void pageBreak() {
- write(EOL + PAGE_BREAK + EOL);
+ LOGGER.warn("Ignoring unsupported page break in Markdown");
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void paragraph() {
- if (tableCellFlag) {
- // ignore paragraphs in table cells
- } else if (itemFlag) {
- write(EOL + EOL + " " + listNestingIndent);
- } else {
- write(EOL + " ");
- }
+ ensureBeginningOfLine();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void paragraph_() {
- if (tableCellFlag) {
- // ignore paragraphs in table cells
+ if (tableCellFlag || listNestingLevel > 0) {
+ // ignore paragraphs in table cells or lists
} else {
- write(EOL + EOL);
+ write(BLANK_LINE);
}
}
@@ -538,36 +443,30 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
/** {@inheritDoc} */
public void verbatim(SinkEventAttributes attributes) {
- write(EOL);
+ ensureBeginningOfLine();
verbatimFlag = true;
- write(EOL + VERBATIM_START_MARKUP + EOL);
+ write(VERBATIM_START_MARKUP + EOL);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void verbatim_() {
- write(EOL + VERBATIM_END_MARKUP + EOL);
+ ensureBeginningOfLine();
+ write(VERBATIM_END_MARKUP + BLANK_LINE);
verbatimFlag = false;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void horizontalRule() {
- write(EOL + HORIZONTAL_RULE_MARKUP + EOL);
+ ensureBeginningOfLine();
+ write(HORIZONTAL_RULE_MARKUP + BLANK_LINE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void table() {
- write(EOL);
+ ensureBeginningOfLine();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void table_() {
if (tableCaptionBuffer.length() > 0) {
text(tableCaptionBuffer.toString() + EOL);
@@ -583,25 +482,19 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
headerRow = true;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableRows_() {
cellJustif = null;
gridFlag = false;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableRow() {
bufferFlag = true;
cellCount = 0;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableRow_() {
bufferFlag = false;
@@ -650,16 +543,12 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
this.rowLine = rLine.toString();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableCell() {
tableCell(false);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableHeaderCell() {
tableCell(true);
}
@@ -673,16 +562,12 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
tableCellFlag = true;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableCell_() {
endTableCell();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableHeaderCell_() {
endTableCell();
}
@@ -696,23 +581,17 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
cellCount++;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableCaption() {
tableCaptionFlag = true;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void tableCaption_() {
tableCaptionFlag = false;
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void figureCaption_() {
write(EOL);
}
@@ -728,9 +607,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
// TODO get implementation from Xhtml5 base sink
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void anchor_() {
// write(ANCHOR_END_MARKUP);
}
@@ -743,9 +620,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void link_() {
if (!headerFlag) {
write(LINK_START_2_MARKUP);
@@ -767,16 +642,14 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void inline() {
inline(null);
}
/** {@inheritDoc} */
public void inline(SinkEventAttributes attributes) {
- if (!headerFlag) {
+ if (!headerFlag && !verbatimFlag) {
List<String> tags = new ArrayList<>();
if (attributes != null) {
@@ -801,75 +674,57 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void inline_() {
- if (!headerFlag) {
+ if (!headerFlag && !verbatimFlag) {
for (String tag : inlineStack.pop()) {
write(tag);
}
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void italic() {
inline(SinkEventAttributeSet.Semantics.ITALIC);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void italic_() {
inline_();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void bold() {
inline(SinkEventAttributeSet.Semantics.BOLD);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void bold_() {
inline_();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void monospaced() {
inline(SinkEventAttributeSet.Semantics.CODE);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void monospaced_() {
inline_();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void lineBreak() {
if (headerFlag || bufferFlag) {
buffer.append(EOL);
} else if (verbatimFlag) {
write(EOL);
} else {
- write(BACKSLASH + EOL);
+ write("" + SPACE + SPACE + EOL);
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void nonBreakingSpace() {
if (headerFlag || bufferFlag) {
buffer.append(NON_BREAKING_SPACE_MARKUP);
@@ -878,7 +733,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /** {@inheritDoc} */
+ @Override
public void text(String text) {
if (tableCaptionFlag) {
tableCaptionBuffer.append(text);
@@ -891,12 +746,12 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
}
}
- /** {@inheritDoc} */
+ @Override
public void rawText(String text) {
write(text);
}
- /** {@inheritDoc} */
+ @Override
public void comment(String comment) {
rawText((startFlag ? "" : EOL) + COMMENT_START + comment + COMMENT_END);
}
@@ -907,6 +762,7 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
* Unkown events just log a warning message but are ignored otherwise.
* @see org.apache.maven.doxia.sink.Sink#unknown(String,Object[],SinkEventAttributes)
*/
+ @Override
public void unknown(String name, Object[] requiredParams, SinkEventAttributes attributes) {
LOGGER.warn("Unknown Sink event '" + name + "', ignoring!");
}
@@ -921,7 +777,9 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
if (tableCellFlag) {
buffer.append(text);
} else {
- writer.write(unifyEOLs(text));
+ String unifiedText = unifyEOLs(text);
+ isWriterAtStartOfNewLine = unifiedText.endsWith(EOL);
+ writer.write(unifiedText);
}
}
@@ -943,16 +801,12 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
write(text);
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void flush() {
writer.flush();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void close() {
writer.close();
@@ -1010,4 +864,15 @@ public class MarkdownSink extends AbstractTextSink implements MarkdownMarkup {
return buffer.toString();
}
+
+ /**
+ * Ensures that the {@link #writer} is currently at the beginning of a new line.
+ * Optionally writes a line separator to ensure that.
+ */
+ private void ensureBeginningOfLine() {
+ // make sure that we are at the start of a line without adding unnecessary blank lines
+ if (!isWriterAtStartOfNewLine) {
+ write(EOL);
+ }
+ }
}
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 1ade0028..d11a6973 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
@@ -32,10 +32,8 @@ import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.sink.impl.AbstractSinkTest;
import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
import org.codehaus.plexus.util.StringUtils;
-import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
@@ -106,13 +104,7 @@ public class MarkdownSinkTest extends AbstractSinkTest {
}
protected String getSectionBlock(String title, int level) {
- return EOL
- + StringUtils.repeat(MarkdownMarkup.SECTION_TITLE_START_MARKUP, level)
- + SPACE
- + title
- + EOL
- + EOL
- + EOL;
+ return StringUtils.repeat(MarkdownMarkup.SECTION_TITLE_START_MARKUP, level) + SPACE + title + EOL + EOL;
}
/** {@inheritDoc} */
@@ -157,21 +149,18 @@ public class MarkdownSinkTest extends AbstractSinkTest {
/** {@inheritDoc} */
protected String getListBlock(String item) {
- return EOL + EOL + Markup.SPACE + "" + MarkdownMarkup.LIST_UNORDERED_ITEM_START_MARKUP + "" + Markup.SPACE
- + getEscapedText(item) + EOL + EOL;
+ return MarkdownMarkup.LIST_UNORDERED_ITEM_START_MARKUP + "" + Markup.SPACE + getEscapedText(item) + EOL + EOL;
}
/** {@inheritDoc} */
protected String getNumberedListBlock(String item) {
- return EOL + EOL + Markup.SPACE + ""
- + MarkdownMarkup.LIST_ORDERED_ITEM_START_MARKUP + ""
- + Markup.SPACE + getEscapedText(item) + EOL + EOL;
+ return MarkdownMarkup.LIST_ORDERED_ITEM_START_MARKUP + "" + Markup.SPACE + getEscapedText(item) + EOL + EOL;
}
/** {@inheritDoc} */
protected String getDefinitionListBlock(String definum, String definition) {
- return EOL + EOL + Markup.SPACE + "" + Markup.LEFT_SQUARE_BRACKET + definum + Markup.RIGHT_SQUARE_BRACKET + ""
- + Markup.SPACE + definition + EOL + EOL;
+ return "<dl>" + EOL + "<dt>" + getEscapedText(definum) + "</dt>" + EOL + "<dd>" + getEscapedText(definition)
+ + "</dd>" + EOL + "</dl>" + EOL + EOL;
}
/** {@inheritDoc} */
@@ -195,7 +184,7 @@ public class MarkdownSinkTest extends AbstractSinkTest {
/** {@inheritDoc} */
protected String getParagraphBlock(String text) {
- return EOL + Markup.SPACE + text + EOL + EOL;
+ return text + EOL + EOL;
}
/** {@inheritDoc} */
@@ -225,24 +214,23 @@ public class MarkdownSinkTest extends AbstractSinkTest {
/** {@inheritDoc} */
protected String getVerbatimSourceBlock(String text) {
- return EOL
- + EOL
- + MarkdownMarkup.VERBATIM_START_MARKUP
+ return MarkdownMarkup.VERBATIM_START_MARKUP
+ EOL
+ text
+ EOL
+ MarkdownMarkup.VERBATIM_START_MARKUP
+ + EOL
+ EOL;
}
/** {@inheritDoc} */
protected String getHorizontalRuleBlock() {
- return EOL + MarkdownMarkup.HORIZONTAL_RULE_MARKUP + EOL;
+ return MarkdownMarkup.HORIZONTAL_RULE_MARKUP + EOL + EOL;
}
/** {@inheritDoc} */
protected String getPageBreakBlock() {
- return EOL + MarkdownMarkup.PAGE_BREAK_MARKUP + EOL;
+ return "";
}
/** {@inheritDoc} */
@@ -297,7 +285,7 @@ public class MarkdownSinkTest extends AbstractSinkTest {
/** {@inheritDoc} */
protected String getLineBreakBlock() {
- return MarkdownMarkup.BACKSLASH + EOL;
+ return "" + SPACE + SPACE + EOL;
}
/** {@inheritDoc} */
@@ -362,7 +350,7 @@ public class MarkdownSinkTest extends AbstractSinkTest {
+ "author: " + EOL
+ " - first author" + EOL
+ " - second author" + EOL
- + MarkdownMarkup.METADATA_MARKUP + EOL;
+ + MarkdownMarkup.METADATA_MARKUP + EOL + EOL;
assertEquals(expected, getSinkContent(), "Wrong metadata section");
}
@@ -380,8 +368,8 @@ public class MarkdownSinkTest extends AbstractSinkTest {
final SinkEventTestingSink originalSink = new SinkEventTestingSink();
parseFile(parser, "test", originalSink);
- // compare sink events from parsing original markdown with sink events from regenerated markdown
- assertThat(regeneratedSink.getEventList(), Matchers.contains(originalSink.getEventList().toArray()));
+ // compare sink events from parsing original markdown with sink events from re-generated markdown
+ assertEquals(originalSink.getEventList(), regeneratedSink.getEventList());
}
private void parseFile(Parser parser, String file, Sink sink) throws ParseException, IOException {
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/test.md b/doxia-modules/doxia-module-markdown/src/test/resources/test.md
index c9c7ae3d..885d1696 100644
--- a/doxia-modules/doxia-module-markdown/src/test/resources/test.md
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/test.md
@@ -6,3 +6,8 @@ Placeholder for future expansion.
- item1
- item2
- item3
+ - item31
+
+```
+code
+```
\ No newline at end of file