diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-16 22:30:30 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-16 22:30:30 +0000 |
| commit | 95836987d6cef1a80035a685057567a4285c9f1a (patch) | |
| tree | 8615a1fe6358824f0bb74d54cd50c43c0b7ac035 /src/main/java/org/zwobble/mammoth/results/Result.java | |
| parent | 6181e50cc197f5f9a71374efe256410e1eceffe3 (diff) | |
Wire up relationships and note reading
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/results/Result.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/results/Result.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/results/Result.java b/src/main/java/org/zwobble/mammoth/results/Result.java index be0819a..7e607f0 100644 --- a/src/main/java/org/zwobble/mammoth/results/Result.java +++ b/src/main/java/org/zwobble/mammoth/results/Result.java @@ -2,9 +2,11 @@ package org.zwobble.mammoth.results; import com.google.common.collect.ImmutableList; import org.zwobble.mammoth.documents.Style; +import org.zwobble.mammoth.util.MammothLists; import java.util.List; import java.util.Optional; +import java.util.function.BiFunction; import java.util.function.Function; import static org.zwobble.mammoth.util.MammothLists.list; @@ -20,6 +22,16 @@ public class Result<T> { return new Result<>(elements.build(), warnings.build()); } + public static <T1, T2, R> Result<R> map( + Result<T1> first, + Result<T2> second, + BiFunction<T1, T2, R> function) + { + return new Result<>( + function.apply(first.value, second.value), + MammothLists.concat(first.warnings, second.warnings)); + } + public static Result<Optional<Style>> empty() { return new Result<>(Optional.empty(), list()); } @@ -47,4 +59,11 @@ public class Result<T> { public <R> Result<R> map(Function<T, R> function) { return new Result<>(function.apply(value), warnings); } + + public <R> Result<R> flatMap(Function<T, Result<R>> function) { + Result<R> intermediateResult = function.apply(value); + return new Result<>( + intermediateResult.getValue(), + MammothLists.concat(warnings, intermediateResult.warnings)); + } } |
