From 68727e6f414728ec7070b94178c40941d3e093b2 Mon Sep 17 00:00:00 2001 From: Afzal Najam Date: Fri, 7 Apr 2023 13:36:42 -0400 Subject: [PATCH] Keep leading spaces in paragraphs when there's a list --- .../commonmark/internal/DocumentParser.java | 4 ++- .../java/org/commonmark/test/ParserTest.java | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java index 086c3dbc0..f2e51ce61 100644 --- a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java @@ -237,7 +237,9 @@ private void parseLine(CharSequence ln) { BlockStartImpl blockStart = findBlockStart(blockParser); if (blockStart == null) { - setNewIndex(nextNonSpace); + if (!blockParserFactories.isEmpty()) { + setNewIndex(nextNonSpace); + } break; } diff --git a/commonmark/src/test/java/org/commonmark/test/ParserTest.java b/commonmark/src/test/java/org/commonmark/test/ParserTest.java index 9a91aa40a..e6b062d39 100644 --- a/commonmark/src/test/java/org/commonmark/test/ParserTest.java +++ b/commonmark/src/test/java/org/commonmark/test/ParserTest.java @@ -99,6 +99,35 @@ public void indentation() { assertEquals("tab + space", firstText(list.getFirstChild().getNext())); } + @Test + public void indentationInParagraph() { + String given = " - 1 space\n - 3 spaces\n - 5 spaces\n\t - tab + space"; + Parser parser = Parser.builder() + .enabledBlockTypes(new HashSet>()) + .build(); + Node document = parser.parse(given); + + assertThat(document.getFirstChild(), instanceOf(Paragraph.class)); + + Node list = document.getFirstChild(); + Node firstChild = list.getFirstChild(); // first item + assertEquals(" - 1 space", firstText(firstChild)); + + Node secondChild = firstChild.getNext(); // second item + assertThat(secondChild, instanceOf(SoftLineBreak.class)); + assertEquals(" - 3 spaces", firstText(secondChild.getNext())); + + Node fourthChild = secondChild.getNext().getNext(); + assertThat(fourthChild, instanceOf(SoftLineBreak.class)); + + assertEquals(" - 5 spaces", firstText(fourthChild.getNext())); + + Node sixthChild = fourthChild.getNext().getNext(); + assertThat(sixthChild, instanceOf(SoftLineBreak.class)); + + assertEquals("\t - tab + space", firstText(sixthChild.getNext())); + } + @Test public void inlineParser() { final InlineParser fakeInlineParser = new InlineParser() {