aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/core.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/core/core.scala')
-rw-r--r--src/main/scala/xyz/driver/core/core.scala22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala
index 3e77c1f..1babd91 100644
--- a/src/main/scala/xyz/driver/core/core.scala
+++ b/src/main/scala/xyz/driver/core/core.scala
@@ -1,6 +1,6 @@
package xyz.driver
-import scalaz.Equal
+import scalaz.{Equal, Monad, OptionT}
package object core {
@@ -25,6 +25,26 @@ package object core {
private[core] trait Tagged[+V, +Tag]
}
type @@[+V, +Tag] = V with tagging.Tagged[V, Tag]
+
+ implicit class OptionTExtensions[H[_]: Monad, T](optionTValue: OptionT[H, T]) {
+
+ def returnUnit: H[Unit] = optionTValue.fold[Unit](_ => (), ())
+
+ def continueIgnoringNone: OptionT[H, Unit] =
+ optionTValue.map(_ => ()).orElse(OptionT.some[H, Unit](()))
+ }
+
+ implicit class MonadicExtensions[H[_]: Monad, T](monadicValue: H[T]) {
+ private implicit val monadT = implicitly[Monad[H]]
+
+ def returnUnit: H[Unit] = monadT(monadicValue)(_ => ())
+
+ def toOptionT: OptionT[H, T] =
+ OptionT.optionT[H](monadT(monadicValue)(value => Option(value)))
+
+ def toUnitOptionT: OptionT[H, Unit] =
+ OptionT.optionT[H](monadT(monadicValue)(_ => Option(())))
+ }
}
package core {