From 4542be3ebb27aa9a11bf459d86dc0ed709571960 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 1 Aug 2021 11:25:36 +0100 Subject: Convert tab elements to tab characters --- .../zwobble/mammoth/internal/conversion/RawText.java | 20 +++++++++++--------- .../mammoth/tests/conversion/RawTextTests.java | 14 ++++++++++---- 2 files changed, 21 insertions(+), 13 deletions(-) (limited to 'src') 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 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 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; @@ -21,6 +18,15 @@ public class RawTextTests { assertThat(result, equalTo("Hello.")); } + @Test + public void tabElementIsConvertedToTabCharacter() { + DocumentElement element = Tab.TAB; + + String result = RawText.extractRawText(element); + + assertThat(result, equalTo("\t")); + } + @Test public void paragraphsAreTerminatedWithNewlines() { DocumentElement element = paragraph( -- cgit v1.2.3