diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-13 17:45:31 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-13 17:46:12 +0000 |
| commit | 15127cb39b2014dd7b2218fafcba970045ddadef (patch) | |
| tree | 87f58962a4b00c145a2d318d0918d99577e448f0 /src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | |
| parent | 2ccbdb0cb934ca4938221541ab5f53f08323a8dc (diff) | |
Read numbering from parapgraph properties
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index 73bab7e..42cee65 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -14,9 +14,11 @@ import static org.zwobble.mammoth.util.MammothLists.list; public class BodyXmlReader { private final Styles styles; + private final Numbering numbering; - public BodyXmlReader(Styles styles) { + public BodyXmlReader(Styles styles, Numbering numbering) { this.styles = styles; + this.numbering = numbering; } public List<DocumentElement> readElement(XmlElement element) { @@ -46,16 +48,28 @@ public class BodyXmlReader { } private Paragraph readParagraph(XmlElement element) { - return new Paragraph(readParagraphStyle(element), readNumbering(element), readElements(element.children())); + XmlElementLike properties = element.findChildOrEmpty("w:pPr"); + return new Paragraph( + readParagraphStyle(properties), + readNumbering(properties), + readElements(element.children())); } - private Optional<Style> readParagraphStyle(XmlElement paragraph) { - XmlElementLike properties = paragraph.findChildOrEmpty("w:pPr"); - return properties.findChildOrEmpty("w:pStyle").getAttributeOrNone("w:val") - .map(styleId -> styles.findParagraphStyleById(styleId).orElse(new Style(styleId, Optional.empty()))); + private Optional<Style> readParagraphStyle(XmlElementLike properties) { + return properties.findChildOrEmpty("w:pStyle") + .getAttributeOrNone("w:val") + .map(styleId -> styles.findParagraphStyleById(styleId) + .orElse(new Style(styleId, Optional.empty()))); } - private Optional<NumberingLevel> readNumbering(XmlElement element) { - return Optional.empty(); + private Optional<NumberingLevel> readNumbering(XmlElementLike properties) { + XmlElementLike numberingProperties = properties.findChildOrEmpty("w:numPr"); + Optional<String> numId = numberingProperties.findChildOrEmpty("w:numId").getAttributeOrNone("w:val"); + Optional<String> levelIndex = numberingProperties.findChildOrEmpty("w:ilvl").getAttributeOrNone("w:val"); + if (numId.isPresent() && levelIndex.isPresent()) { + return numbering.findLevel(numId.get(), levelIndex.get()); + } else { + return Optional.empty(); + } } } |
