diff options
| author | Michael Williamson <mike@zwobble.org> | 2019-03-17 18:29:54 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2019-03-17 18:29:54 +0000 |
| commit | 65bcf3a7c50b1ec7b57d4974ad377ed66d6c98c8 (patch) | |
| tree | e4d3c58407866c140655552ca53f25eaca3c4a77 /src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java | |
| parent | 15daf7d09b8f3da093eea154f49579cdf2002fa7 (diff) | |
Defer resolution of abstract nums until necessary
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java b/src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java index fa1941f..33e5e27 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java @@ -8,13 +8,13 @@ import java.util.Map; import java.util.Optional; import static org.zwobble.mammoth.internal.util.Maps.entry; -import static org.zwobble.mammoth.internal.util.Maps.lookup; import static org.zwobble.mammoth.internal.util.Maps.toMap; public class NumberingXml { public static Numbering readNumberingXmlElement(XmlElement element) { Map<String, Map<String, NumberingLevel>> abstractNums = readAbstractNums(element.findChildren("w:abstractNum")); - return new Numbering(readNums(element.findChildren("w:num"), abstractNums)); + Map<String, Numbering.Num> nums = readNums(element.findChildren("w:num")); + return new Numbering(abstractNums, nums); } private static Map<String, Map<String, NumberingLevel>> readAbstractNums(XmlElementList children) { @@ -38,20 +38,14 @@ public class NumberingXml { return entry(levelIndex, new NumberingLevel(levelIndex, isOrdered)); } - private static Map<String, Map<String, NumberingLevel>> readNums( - XmlElementList numElements, - Map<String, Map<String, NumberingLevel>> abstractNums - ) { - return toMap(numElements, numElement -> readNum(numElement, abstractNums)); + private static Map<String, Numbering.Num> readNums(XmlElementList numElements) { + return toMap(numElements, NumberingXml::readNum); } - private static Map.Entry<String,Map<String,NumberingLevel>> readNum( - XmlElement numElement, - Map<String, Map<String, NumberingLevel>> abstractNums - ) { + private static Map.Entry<String, Numbering.Num> readNum(XmlElement numElement) { // TODO: in python-mammoth, we allow None here. Check whether that's actually possible or not String numId = numElement.getAttribute("w:numId"); - String abstractNumId = numElement.findChild("w:abstractNumId").get().getAttribute("w:val"); - return entry(numId, lookup(abstractNums, abstractNumId).get()); + Optional<String> abstractNumId = numElement.findChildOrEmpty("w:abstractNumId").getAttributeOrNone("w:val"); + return entry(numId, new Numbering.Num(abstractNumId)); } } |
