package org.zwobble.mammoth.results; import com.google.common.collect.ImmutableList; import org.zwobble.mammoth.documents.Style; import java.util.List; import java.util.Optional; import java.util.function.Function; import static org.zwobble.mammoth.util.MammothLists.list; public class Result { public static Result> concat(Iterable> results) { ImmutableList.Builder elements = ImmutableList.builder(); ImmutableList.Builder warnings = ImmutableList.builder(); for (Result result : results) { elements.add(result.value); warnings.addAll(result.warnings); } return new Result<>(elements.build(), warnings.build()); } public static Result> empty() { return new Result<>(Optional.empty(), list()); } public static Result success(T value) { return new Result<>(value, list()); } private final T value; private final List warnings; public Result(T value, List warnings) { this.value = value; this.warnings = warnings; } public T getValue() { return value; } public List getWarnings() { return warnings; } public Result map(Function function) { return new Result<>(function.apply(value), warnings); } }