diff options
author | Rui Gonçalves <ruippeixotog@gmail.com> | 2017-06-21 22:39:26 +0100 |
---|---|---|
committer | Rui Gonçalves <ruippeixotog@gmail.com> | 2017-06-21 22:39:26 +0100 |
commit | d3bf8bef81124ef47097d808a0b9299641fe5c7b (patch) | |
tree | 85e0b12a38c54e3fdfd5af9b031749dc892407ea /examples/src/main/scala | |
parent | 0ccdf446c4c7770e60ede55ab712c8a551e36796 (diff) | |
download | magnolia-d3bf8bef81124ef47097d808a0b9299641fe5c7b.tar.gz magnolia-d3bf8bef81124ef47097d808a0b9299641fe5c7b.tar.bz2 magnolia-d3bf8bef81124ef47097d808a0b9299641fe5c7b.zip |
Add ContravariantDerivation for cats.Show
Diffstat (limited to 'examples/src/main/scala')
-rw-r--r-- | examples/src/main/scala/cats.scala | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/examples/src/main/scala/cats.scala b/examples/src/main/scala/cats.scala new file mode 100644 index 0000000..08690c2 --- /dev/null +++ b/examples/src/main/scala/cats.scala @@ -0,0 +1,23 @@ +package magnolia.examples.cats + +import scala.collection.immutable.ListMap +import scala.language.experimental.macros +import scala.language.higherKinds + +import cats.Show +import magnolia.ContravariantDerivation +import magnolia.Macros + +object instances extends instances1 { + + implicit val showDerivation = new ContravariantDerivation[Show] { + type Return = String + def call[T](show: Show[T], value: T): String = show.show(value) + def construct[T](body: T => String): Show[T] = body(_) + def join(xs: ListMap[String, String]): String = xs.map { case (k, v) => s"$k=$v" }.mkString("{", ", ", "}") + } +} + +trait instances1 { + implicit def genericShow[T]: Show[T] = macro Macros.magnolia[T, Show[_]] +} |