aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java20
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/conversion/RawTextTests.java14
3 files changed, 23 insertions, 13 deletions
diff --git a/NEWS b/NEWS
index f35c0e8..0079d4f 100644
--- a/NEWS
+++ b/NEWS
@@ -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."))