From 96accc4f5eb43f482afdc939f9e23ddb45ab725d Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Thu, 22 Dec 2016 18:04:47 -0500 Subject: add apply method to Id.Mapper for explicit conversions --- src/main/scala/xyz/driver/core/core.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 1c92423..fb51f48 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -39,7 +39,10 @@ package core { implicit def idEqual[T]: Equal[Id[T]] = Equal.equal[Id[T]](_ == _) implicit def idOrdering[T]: Ordering[Id[T]] = Ordering.by[Id[T], String](_.value) - sealed trait Mapper[E, R] + sealed class Mapper[E, R] { + def apply(id: Id[E]): Id[R] = Id[R](id.value) + def apply(id: Id[R])(implicit dummy: DummyImplicit): Id[E] = Id[E](id.value) + } object Mapper { def apply[E, R] = new Mapper[E, R] {} } -- cgit v1.2.3 From a47540f5da184be38e14bd6b85555dc823648806 Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Thu, 22 Dec 2016 18:23:35 -0500 Subject: add a way to provide type hint to explicit conversion --- src/main/scala/xyz/driver/core/core.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index fb51f48..b6d17c8 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -40,8 +40,8 @@ package core { implicit def idOrdering[T]: Ordering[Id[T]] = Ordering.by[Id[T], String](_.value) sealed class Mapper[E, R] { - def apply(id: Id[E]): Id[R] = Id[R](id.value) - def apply(id: Id[R])(implicit dummy: DummyImplicit): Id[E] = Id[E](id.value) + def apply[T >: R](id: Id[E]): Id[T] = Id[R](id.value) + def apply[T >: E](id: Id[R])(implicit dummy: DummyImplicit): Id[T] = Id[E](id.value) } object Mapper { def apply[E, R] = new Mapper[E, R] {} -- cgit v1.2.3 From 6674c5b096bd6fce5706632e0d63904afe0c91de Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Thu, 22 Dec 2016 18:31:32 -0500 Subject: clean up code --- src/main/scala/xyz/driver/core/core.scala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index b6d17c8..db2af95 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -40,14 +40,14 @@ package core { implicit def idOrdering[T]: Ordering[Id[T]] = Ordering.by[Id[T], String](_.value) sealed class Mapper[E, R] { - def apply[T >: R](id: Id[E]): Id[T] = Id[R](id.value) - def apply[T >: E](id: Id[R])(implicit dummy: DummyImplicit): Id[T] = Id[E](id.value) + def apply[T >: E](id: Id[R]): Id[T] = Id[E](id.value) + def apply[T >: R](id: Id[E])(implicit dummy: DummyImplicit): Id[T] = Id[R](id.value) } object Mapper { - def apply[E, R] = new Mapper[E, R] {} + def apply[E, R] = new Mapper[E, R] } - implicit def convertRE[R, E](id: Id[R])(implicit ev: Mapper[E, R]): Id[E] = Id[E](id.value) - implicit def convertER[E, R](id: Id[E])(implicit ev: Mapper[E, R]): Id[R] = Id[R](id.value) + implicit def convertRE[R, E](id: Id[R])(implicit mapper: Mapper[E, R]): Id[E] = mapper[E](id) + implicit def convertER[E, R](id: Id[E])(implicit mapper: Mapper[E, R]): Id[R] = mapper[R](id) } final case class Name[+Tag](value: String) extends AnyVal { -- cgit v1.2.3