aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2019-03-17 18:29:54 +0000
committerMichael Williamson <mike@zwobble.org>2019-03-17 18:29:54 +0000
commit65bcf3a7c50b1ec7b57d4974ad377ed66d6c98c8 (patch)
treee4d3c58407866c140655552ca53f25eaca3c4a77 /src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java
parent15daf7d09b8f3da093eea154f49579cdf2002fa7 (diff)
Defer resolution of abstract nums until necessary
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java25
1 files changed, 20 insertions, 5 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 5ee09db..2680cfa 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/Numbering.java
@@ -9,16 +9,31 @@ import static org.zwobble.mammoth.internal.util.Maps.lookup;
import static org.zwobble.mammoth.internal.util.Maps.map;
public class Numbering {
- public static final Numbering EMPTY = new Numbering(map());
+ public static class Num {
+ private final Optional<String> abstractNumId;
- private final Map<String, Map<String, NumberingLevel>> numbering;
+ public Num(Optional<String> abstractNumId) {
+ this.abstractNumId = abstractNumId;
+ }
+ }
+
+ public static final Numbering EMPTY = new Numbering(map(), map());
+
+ private final Map<String, Map<String, NumberingLevel>> abstractNums;
+ private final Map<String, Num> nums;
- public Numbering(Map<String, Map<String, NumberingLevel>> numbering) {
- this.numbering = numbering;
+ public Numbering(
+ Map<String, Map<String, NumberingLevel>> abstractNums,
+ Map<String, Num> nums
+ ) {
+ this.abstractNums = abstractNums;
+ this.nums = nums;
}
public Optional<NumberingLevel> findLevel(String numId, String level) {
- return lookup(numbering, numId)
+ return lookup(nums, numId)
+ .flatMap(num -> num.abstractNumId)
+ .flatMap(abstractNumId -> lookup(this.abstractNums, abstractNumId))
.flatMap(levels -> lookup(levels, level));
}
}