aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/core.scala
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-04-13 10:22:09 -0700
committervlad <vlad@driver.xyz>2017-04-13 10:22:09 -0700
commit2d0aba0eaf360c521d9bcfbf48dc748b777301d2 (patch)
tree1c88759d0cd63e5009d3173f695011c447a2e500 /src/main/scala/xyz/driver/core/core.scala
parentfbf25ed06bf87af2d139ae58f208d9bb5b299e03 (diff)
downloaddriver-core-2d0aba0eaf360c521d9bcfbf48dc748b777301d2.tar.gz
driver-core-2d0aba0eaf360c521d9bcfbf48dc748b777301d2.tar.bz2
driver-core-2d0aba0eaf360c521d9bcfbf48dc748b777301d2.zip
PDW-598 PR comments, refinement for OptionT utils
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 {