diff options
author | Jakob Odersky <jakob@driver.xyz> | 2018-09-12 15:56:41 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2018-10-09 16:19:39 -0700 |
commit | 7a793ffa068fda8f2146f84fa785328d928dba03 (patch) | |
tree | d489b0b9ebf30ca61e2b6ef1c9906b704bc1fa1e /src/main/scala/xyz/driver/core/tagging/tagging.scala | |
parent | 2cef01adfe3ebd3a0fa1e0bbbba7f6388198ba10 (diff) | |
download | driver-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.scala | 62 |
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] - } - -} |