diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/docx/BodyXml.java | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXml.java b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java index df98fbc..1796367 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXml.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java @@ -14,11 +14,13 @@ 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 final Styles styles; + + public BodyXml(Styles styles) { + this.styles = styles; } - private static List<DocumentElement> readElement(XmlElement element) { + public List<DocumentElement> readElement(XmlElement element) { switch (element.getName()) { case "w:t": return ImmutableList.of(new TextElement(element.innerText())); @@ -35,21 +37,21 @@ public class BodyXml { } } - private static ParagraphElement readParagraph(XmlElement element) { + private ParagraphElement readParagraph(XmlElement element) { return new ParagraphElement(readParagraphStyle(element), readElements(element.children())); } - private static Optional<Style> readParagraphStyle(XmlElement paragraph) { + private Optional<Style> readParagraphStyle(XmlElement paragraph) { XmlElementLike properties = paragraph.findChildOrEmpty("w:pPr"); return properties.findChildOrEmpty("w:pStyle").getAttributeOrNone("w:val") - .map(styleId -> new Style(styleId, Optional.empty())); + .map(styleId -> styles.findParagraphStyleById(styleId).orElse(new Style(styleId, Optional.empty()))); } - private static List<DocumentElement> readElements(Iterable<XmlNode> nodes) { + private List<DocumentElement> readElements(Iterable<XmlNode> nodes) { return ImmutableList.copyOf( concat( transform( filter(nodes, XmlElement.class), - BodyXml::readElement))); + this::readElement))); } } |
