diff options
Diffstat (limited to 'src')
3 files changed, 19 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java b/src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java index 2680cfa..0191763 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java @@ -9,6 +9,14 @@ import static org.zwobble.mammoth.internal.util.Maps.lookup; import static org.zwobble.mammoth.internal.util.Maps.map; public class Numbering { + public static class AbstractNum { + private final Map<String, NumberingLevel> levels; + + public AbstractNum(Map<String, NumberingLevel> levels) { + this.levels = levels; + } + } + public static class Num { private final Optional<String> abstractNumId; @@ -19,11 +27,11 @@ public class Numbering { public static final Numbering EMPTY = new Numbering(map(), map()); - private final Map<String, Map<String, NumberingLevel>> abstractNums; + private final Map<String, AbstractNum> abstractNums; private final Map<String, Num> nums; public Numbering( - Map<String, Map<String, NumberingLevel>> abstractNums, + Map<String, AbstractNum> abstractNums, Map<String, Num> nums ) { this.abstractNums = abstractNums; @@ -34,6 +42,6 @@ public class Numbering { return lookup(nums, numId) .flatMap(num -> num.abstractNumId) .flatMap(abstractNumId -> lookup(this.abstractNums, abstractNumId)) - .flatMap(levels -> lookup(levels, level)); + .flatMap(abstractNum -> lookup(abstractNum.levels, level)); } } 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 33e5e27..0ab12b4 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java @@ -12,19 +12,19 @@ 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")); + Map<String, Numbering.AbstractNum> abstractNums = readAbstractNums(element.findChildren("w:abstractNum")); 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) { + private static Map<String, Numbering.AbstractNum> readAbstractNums(XmlElementList children) { return toMap(children, NumberingXml::readAbstractNum); } - private static Map.Entry<String, Map<String, NumberingLevel>> readAbstractNum(XmlElement element) { + private static Map.Entry<String, Numbering.AbstractNum> readAbstractNum(XmlElement element) { // TODO: in python-mammoth, we allow None here. Check whether that's actually possible or not String abstractNumId = element.getAttribute("w:abstractNumId"); - return entry(abstractNumId, readAbstractNumLevels(element)); + return entry(abstractNumId, new Numbering.AbstractNum(readAbstractNumLevels(element))); } private static Map<String, NumberingLevel> readAbstractNumLevels(XmlElement element) { diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java index e115c1a..897ea60 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -1441,7 +1441,10 @@ public class BodyXmlTests { private static Numbering numberingMap(Map<String, Map<String, NumberingLevel>> numbering) { return new Numbering( - numbering, + numbering.entrySet().stream().collect(Collectors.toMap( + entry -> entry.getKey(), + entry -> new Numbering.AbstractNum(entry.getValue()) + )), numbering.keySet().stream().collect(Collectors.toMap( numId -> numId, numId -> new Numbering.Num(Optional.of(numId)) |
