diff options
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java | 20 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/conversion/RawTextTests.java | 14 |
3 files changed, 23 insertions, 13 deletions
@@ -2,6 +2,8 @@ * Convert symbols in supported fonts to corresponding Unicode characters. +* When extracting raw text, convert tab elements to tab characters. + # 1.4.2 * Support soft hyphens. diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java b/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java index 0834874..5bfeb83 100644 --- a/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java +++ b/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java @@ -22,14 +22,16 @@ public class RawText { } public static String extractRawText(DocumentElement node) { - return tryCast(Text.class, node) - .map(Text::getValue) - .orElseGet(() -> { - List<DocumentElement> children = tryCast(HasChildren.class, node) - .map(HasChildren::getChildren) - .orElse(list()); - String suffix = tryCast(Paragraph.class, node).map(paragraph -> "\n\n").orElse(""); - return extractRawText(children) + suffix; - }); + if (node instanceof Text) { + return ((Text) node).getValue(); + } else if (node instanceof Tab) { + return "\t"; + } else { + List<DocumentElement> children = tryCast(HasChildren.class, node) + .map(HasChildren::getChildren) + .orElse(list()); + String suffix = tryCast(Paragraph.class, node).map(paragraph -> "\n\n").orElse(""); + return extractRawText(children) + suffix; + } } } diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/RawTextTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/RawTextTests.java index f5d54d3..31a7738 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/RawTextTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/RawTextTests.java @@ -2,10 +2,7 @@ package org.zwobble.mammoth.tests.conversion; import org.junit.jupiter.api.Test; import org.zwobble.mammoth.internal.conversion.RawText; -import org.zwobble.mammoth.internal.documents.Break; -import org.zwobble.mammoth.internal.documents.Document; -import org.zwobble.mammoth.internal.documents.DocumentElement; -import org.zwobble.mammoth.internal.documents.Text; +import org.zwobble.mammoth.internal.documents.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -22,6 +19,15 @@ public class RawTextTests { } @Test + public void tabElementIsConvertedToTabCharacter() { + DocumentElement element = Tab.TAB; + + String result = RawText.extractRawText(element); + + assertThat(result, equalTo("\t")); + } + + @Test public void paragraphsAreTerminatedWithNewlines() { DocumentElement element = paragraph( withChildren(new Text("Hello "), new Text("world.")) |
