diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-13 18:18:33 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-13 18:18:33 +0000 |
| commit | a431972f98d98114dc9a5a65a3fbaf68967a8161 (patch) | |
| tree | 5a4e6f29a884ca1091b5a8f4d5c5a4f1558b2233 /src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | |
| parent | cfff129846046a2549f8c78f6de458b9f4183f43 (diff) | |
Add result objects
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index 334f925..26958dd 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -1,17 +1,17 @@ package org.zwobble.mammoth.docx; -import com.google.common.collect.ImmutableList; import org.zwobble.mammoth.documents.*; import org.zwobble.mammoth.util.MammothOptionals; import org.zwobble.mammoth.xml.XmlElement; import org.zwobble.mammoth.xml.XmlElementLike; import org.zwobble.mammoth.xml.XmlNode; -import java.util.List; import java.util.Optional; -import static com.google.common.collect.Iterables.*; -import static org.zwobble.mammoth.util.MammothLists.list; +import static com.google.common.collect.Iterables.filter; +import static com.google.common.collect.Iterables.transform; +import static org.zwobble.mammoth.docx.ReadResult.EMPTY_SUCCESS; +import static org.zwobble.mammoth.docx.ReadResult.success; public class BodyXmlReader { private final Styles styles; @@ -22,38 +22,37 @@ public class BodyXmlReader { this.numbering = numbering; } - public List<DocumentElement> readElement(XmlElement element) { + public ReadResult readElement(XmlElement element) { switch (element.getName()) { case "w:t": - return list(new Text(element.innerText())); + return success(new Text(element.innerText())); case "w:r": - return list(new Run(readElements(element.children()))); + return readElements(element.children()).map(Run::new); case "w:p": - return list(readParagraph(element)); + return readParagraph(element); case "w:pPr": - return list(); + return EMPTY_SUCCESS; default: // TODO: emit warning - return list(); + return EMPTY_SUCCESS; } } - public List<DocumentElement> readElements(Iterable<XmlNode> nodes) { - return ImmutableList.copyOf( - concat( - transform( - filter(nodes, XmlElement.class), - this::readElement))); + public ReadResult readElements(Iterable<XmlNode> nodes) { + return ReadResult.concat( + transform( + filter(nodes, XmlElement.class), + this::readElement)); } - private Paragraph readParagraph(XmlElement element) { + private ReadResult readParagraph(XmlElement element) { XmlElementLike properties = element.findChildOrEmpty("w:pPr"); - return new Paragraph( - readParagraphStyle(properties), - readNumbering(properties), - readElements(element.children())); + Optional<Style> paragraphStyle = readParagraphStyle(properties); + Optional<NumberingLevel> numbering = readNumbering(properties); + return readElements(element.children()) + .map(children -> new Paragraph(paragraphStyle, numbering, children)); } private Optional<Style> readParagraphStyle(XmlElementLike properties) { |
