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/Numbering.java | |
| parent | 15daf7d09b8f3da093eea154f49579cdf2002fa7 (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.java | 25 |
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)); } } |
