From 487bf06d9247b4e2369826af9118c2d4b7dcf0a0 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 21:59:28 +0000 Subject: Read text boxes --- .../java/org/zwobble/mammoth/docx/ReadResult.java | 41 +++++++++++++++++----- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/docx/ReadResult.java') diff --git a/src/main/java/org/zwobble/mammoth/docx/ReadResult.java b/src/main/java/org/zwobble/mammoth/docx/ReadResult.java index 7c672b2..31bbf2a 100644 --- a/src/main/java/org/zwobble/mammoth/docx/ReadResult.java +++ b/src/main/java/org/zwobble/mammoth/docx/ReadResult.java @@ -16,12 +16,14 @@ public class ReadResult { public static ReadResult concat(Iterable results) { ImmutableList.Builder elements = ImmutableList.builder(); + ImmutableList.Builder extra = ImmutableList.builder(); ImmutableList.Builder warnings = ImmutableList.builder(); for (ReadResult result : results) { elements.addAll(result.elements); + extra.addAll(result.extra); warnings.addAll(result.warnings); } - return new ReadResult(elements.build(), warnings.build()); + return new ReadResult(elements.build(), extra.build(), warnings.build()); } public static ReadResult map( @@ -29,13 +31,10 @@ public class ReadResult { ReadResult second, BiFunction, DocumentElement> function) { - ImmutableList.Builder warnings = ImmutableList.builder(); - warnings.addAll(first.getWarnings()); - warnings.addAll(second.warnings); - return new ReadResult( list(function.apply(first.getValue(), second.elements)), - warnings.build()); + second.extra, + concat(first.getWarnings(), second.warnings)); } public static ReadResult success(DocumentElement element) { @@ -43,22 +42,46 @@ public class ReadResult { } public static ReadResult success(List elements) { - return new ReadResult(elements, list()); + return new ReadResult(elements, list(), list()); + } + + public static ReadResult emptyWithWarning(Warning warning) { + return new ReadResult(list(), list(), list(warning)); } private final List elements; + private final List extra; private final List warnings; - public ReadResult(List elements, List warnings) { + public ReadResult(List elements, List extra, List warnings) { this.elements = elements; + this.extra = extra; this.warnings = warnings; } public ReadResult map(Function, DocumentElement> function) { - return new ReadResult(list(function.apply(elements)), warnings); + return new ReadResult( + list(function.apply(elements)), + extra, + warnings); + } + + public ReadResult toExtra() { + return new ReadResult(list(), concat(extra, elements), warnings); + } + + public ReadResult appendExtra() { + return new ReadResult(concat(elements, extra), list(), warnings); } public Result> toResult() { return new Result<>(elements, warnings); } + + private static List concat(List first, List second) { + ImmutableList.Builder builder = ImmutableList.builder(); + builder.addAll(first); + builder.addAll(second); + return builder.build(); + } } -- cgit v1.2.3