aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/tagging/tagging.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2018-09-12 15:56:41 -0700
committerJakob Odersky <jakob@odersky.com>2018-10-09 16:19:39 -0700
commit7a793ffa068fda8f2146f84fa785328d928dba03 (patch)
treed489b0b9ebf30ca61e2b6ef1c9906b704bc1fa1e /src/main/scala/xyz/driver/core/tagging/tagging.scala
parent2cef01adfe3ebd3a0fa1e0bbbba7f6388198ba10 (diff)
downloaddriver-core-7a793ffa068fda8f2146f84fa785328d928dba03.tar.gz
driver-core-7a793ffa068fda8f2146f84fa785328d928dba03.tar.bz2
driver-core-7a793ffa068fda8f2146f84fa785328d928dba03.zip
Move core types into core-types project
Note that xyz.driver.core.FutureExtensions was moved to xyz.driver.core.rest as it (only) contained logic that dealt with service exceptions, something that belongs into core-rest and must not be depended upon by core-types. This is a breaking change.
Diffstat (limited to 'src/main/scala/xyz/driver/core/tagging/tagging.scala')
-rw-r--r--src/main/scala/xyz/driver/core/tagging/tagging.scala62
1 files changed, 0 insertions, 62 deletions
diff --git a/src/main/scala/xyz/driver/core/tagging/tagging.scala b/src/main/scala/xyz/driver/core/tagging/tagging.scala
deleted file mode 100644
index 5b6599e..0000000
--- a/src/main/scala/xyz/driver/core/tagging/tagging.scala
+++ /dev/null
@@ -1,62 +0,0 @@
-package xyz.driver.core
-
-import scala.collection.generic.CanBuildFrom
-import scala.language.{higherKinds, implicitConversions}
-
-/**
- * @author sergey
- * @since 9/11/18
- */
-package object tagging {
-
- implicit class Taggable[V <: Any](val v: V) extends AnyVal {
- def tagged[Tag]: V @@ Tag = v.asInstanceOf[V @@ Tag]
- }
-
-}
-
-package tagging {
-
- sealed trait Tagged[+V, +Tag]
-
- object Tagged {
- implicit class TaggedOps[V, Tag](val v: V @@ Tag) extends AnyVal {
- def tagless: V = v
- }
-
- implicit def orderingMagnet[V, Tag](implicit ord: Ordering[V]): Ordering[V @@ Tag] =
- ord.asInstanceOf[Ordering[V @@ Tag]]
-
- }
-
- sealed trait Trimmed
-
- object Trimmed {
-
- implicit def apply[V](trimmable: V)(implicit ev: CanBeTrimmed[V]): V @@ Trimmed = {
- ev.trim(trimmable).tagged[Trimmed]
- }
-
- sealed trait CanBeTrimmed[T] {
- def trim(trimmable: T): T
- }
-
- implicit object StringCanBeTrimmed extends CanBeTrimmed[String] {
- def trim(str: String): String = str.trim()
- }
-
- implicit def nameCanBeTrimmed[T]: CanBeTrimmed[Name[T]] = new CanBeTrimmed[Name[T]] {
- def trim(name: Name[T]): Name[T] = Name[T](name.value.trim())
- }
-
- implicit def option2Trimmed[V: CanBeTrimmed](option: Option[V]): Option[V @@ Trimmed] =
- option.map(Trimmed(_))
-
- implicit def coll2Trimmed[T, C[_] <: Traversable[_]](coll: C[T])(
- implicit ev: C[T] <:< Traversable[T],
- tr: CanBeTrimmed[T],
- bf: CanBuildFrom[Nothing, T @@ Trimmed, C[T @@ Trimmed]]): C[T @@ Trimmed] =
- ev(coll).map(Trimmed(_)(tr)).to[C]
- }
-
-}