diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-02 14:19:08 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-02 14:19:08 +0000 |
| commit | 70edd90a3077fc63a5890c4d7d55561ba0274902 (patch) | |
| tree | e306c8ad53ac94d50dc36aa7b2bb5e41bb16de0b | |
| parent | 02ac29cbd29ff95c7174981edaea213e2b7315c7 (diff) | |
Read children of w:p
3 files changed, 37 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/documents/ParagraphElement.java b/src/main/java/org/zwobble/mammoth/documents/ParagraphElement.java new file mode 100644 index 0000000..3a8e447 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/ParagraphElement.java @@ -0,0 +1,15 @@ +package org.zwobble.mammoth.documents; + +import java.util.List; + +public class ParagraphElement implements DocumentElement { + private final List<DocumentElement> children; + + public ParagraphElement(List<DocumentElement> children) { + this.children = children; + } + + public List<DocumentElement> getChildren() { + return children; + } +} diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXml.java b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java index a8b7246..94faf83 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXml.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java @@ -2,6 +2,7 @@ package org.zwobble.mammoth.docx; import com.google.common.collect.ImmutableList; import org.zwobble.mammoth.documents.DocumentElement; +import org.zwobble.mammoth.documents.ParagraphElement; import org.zwobble.mammoth.documents.RunElement; import org.zwobble.mammoth.documents.TextElement; import org.zwobble.mammoth.xml.XmlElement; @@ -19,6 +20,8 @@ public class BodyXml { return new TextElement(element.innerText()); case "w:r": return new RunElement(readElements(element.children())); + case "w:p": + return new ParagraphElement(readElements(element.children())); default: throw new UnsupportedOperationException(); } diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java index 8b04b51..8ab2dd8 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList; import org.hamcrest.Matcher; import org.junit.Test; import org.zwobble.mammoth.documents.DocumentElement; +import org.zwobble.mammoth.documents.ParagraphElement; import org.zwobble.mammoth.documents.RunElement; import org.zwobble.mammoth.documents.TextElement; import org.zwobble.mammoth.xml.XmlElement; @@ -32,6 +33,18 @@ public class BodyXmlTests { isRunElement(isTextElement("Hello!"))); } + @Test + public void canReadTextWithinParagraph() { + XmlElement element = paragraphXml(ImmutableList.of(runXml(ImmutableList.of(textXml("Hello!"))))); + assertThat( + readBodyXmlElement(element), + isParagraphElement(isRunElement(isTextElement("Hello!")))); + } + + private XmlElement paragraphXml(List<XmlNode> children) { + return element("w:p", children); + } + private XmlElement runXml(List<XmlNode> children) { return element("w:r", children); } @@ -40,6 +53,12 @@ public class BodyXmlTests { return element("w:t", ImmutableList.of(text(value))); } + private Matcher<DocumentElement> isParagraphElement(Matcher<DocumentElement> child) { + return allOf( + instanceOf(ParagraphElement.class), + hasProperty("children", contains(child))); + } + private Matcher<DocumentElement> isRunElement(Matcher<DocumentElement> child) { return allOf( instanceOf(RunElement.class), |
