aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/results/Result.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-16 22:30:30 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-16 22:30:30 +0000
commit95836987d6cef1a80035a685057567a4285c9f1a (patch)
tree8615a1fe6358824f0bb74d54cd50c43c0b7ac035 /src/main/java/org/zwobble/mammoth/results/Result.java
parent6181e50cc197f5f9a71374efe256410e1eceffe3 (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.java19
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));
+ }
}