aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/Result.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 18:18:33 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 18:18:33 +0000
commita431972f98d98114dc9a5a65a3fbaf68967a8161 (patch)
tree5a4e6f29a884ca1091b5a8f4d5c5a4f1558b2233 /src/main/java/org/zwobble/mammoth/Result.java
parentcfff129846046a2549f8c78f6de458b9f4183f43 (diff)
Add result objects
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/Result.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/Result.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/Result.java b/src/main/java/org/zwobble/mammoth/Result.java
new file mode 100644
index 0000000..0665364
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/Result.java
@@ -0,0 +1,34 @@
+package org.zwobble.mammoth;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+import java.util.function.Function;
+
+public class Result<T> {
+ public static <T> Result<List<T>> concat(Iterable<Result<T>> results) {
+ ImmutableList.Builder<T> elements = ImmutableList.builder();
+ for (Result<T> result : results) {
+ elements.add(result.value);
+ }
+ return new Result<>(elements.build());
+ }
+
+ public static <T> Result<T> success(T value) {
+ return new Result<>(value);
+ }
+
+ private final T value;
+
+ public Result(T value) {
+ this.value = value;
+ }
+
+ public T getValue() {
+ return value;
+ }
+
+ public <R> Result<R> map(Function<T, R> function) {
+ return new Result<>(function.apply(value));
+ }
+}