diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-02 22:26:45 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-02 22:26:45 +0000 |
| commit | 871df6bd1a1f7c45e750a49589c7a195c3506205 (patch) | |
| tree | 11b552f4c2e12ec1242852c047446d1f27df20f3 /src/main/java/org/zwobble/mammoth/docx/BodyXml.java | |
| parent | d5005305b90afe47e639fc0fa1430242556f0385 (diff) | |
Add reading of style IDs
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/docx/BodyXml.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/docx/BodyXml.java | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXml.java b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java index 94faf83..8aba487 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXml.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java @@ -6,31 +6,52 @@ import org.zwobble.mammoth.documents.ParagraphElement; import org.zwobble.mammoth.documents.RunElement; import org.zwobble.mammoth.documents.TextElement; 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.concat; import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.transform; public class BodyXml { public static DocumentElement readBodyXmlElement(XmlElement element) { + return readElement(element).get(0); + } + + private static List<DocumentElement> readElement(XmlElement element) { switch (element.getName()) { case "w:t": - return new TextElement(element.innerText()); + return ImmutableList.of(new TextElement(element.innerText())); case "w:r": - return new RunElement(readElements(element.children())); + return ImmutableList.of(new RunElement(readElements(element.children()))); case "w:p": - return new ParagraphElement(readElements(element.children())); + return ImmutableList.of(readParagraph(element)); + + case "w:pPr": + return ImmutableList.of(); + default: throw new UnsupportedOperationException(); } } + private static ParagraphElement readParagraph(XmlElement element) { + return new ParagraphElement(readParagraphStyleId(element), readElements(element.children())); + } + + private static Optional<String> readParagraphStyleId(XmlElement paragraph) { + XmlElementLike properties = paragraph.findChildOrEmpty("w:pPr"); + return properties.findChildOrEmpty("w:pStyle").getAttributeOrNone("w:val"); + } + private static List<DocumentElement> readElements(Iterable<XmlNode> nodes) { return ImmutableList.copyOf( - transform( - filter(nodes, XmlElement.class), - BodyXml::readBodyXmlElement)); + concat( + transform( + filter(nodes, XmlElement.class), + BodyXml::readElement))); } } |
