X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Futils%2FOptionals.kt;h=326db9da47903f8e3e68318e20e8f5c58f42054a;hp=5f53ed03a54a3a0c1585a5e0afd329f0dd92a8d3;hb=HEAD;hpb=aab46ff18650e49e9c812ec61cf80cf62af82f49 diff --git a/src/main/kotlin/net/pterodactylus/sone/utils/Optionals.kt b/src/main/kotlin/net/pterodactylus/sone/utils/Optionals.kt index 5f53ed0..326db9d 100644 --- a/src/main/kotlin/net/pterodactylus/sone/utils/Optionals.kt +++ b/src/main/kotlin/net/pterodactylus/sone/utils/Optionals.kt @@ -3,6 +3,9 @@ package net.pterodactylus.sone.utils import com.google.common.base.Optional fun Optional.let(block: (T) -> R): R? = if (isPresent) block(get()) else null -fun Optional.also(block: (T) -> Unit) = if (isPresent) block(get()) else Unit +fun Optional.also(block: (T) -> Unit): Optional { if (isPresent) block(get()); return this } fun T?.asOptional(): Optional = this?.let { Optional.of(it) } ?: Optional.absent() + +fun Iterable.mapPresent(transform: (T) -> Optional): List = + map(transform).filter { it.isPresent }.map { it.get() }