aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java14
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/NumberingXml.java8
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java5
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))