aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/DerivedFormats.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/DerivedFormats.scala')
-rw-r--r--src/main/scala/DerivedFormats.scala13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/main/scala/DerivedFormats.scala b/src/main/scala/DerivedFormats.scala
index cbfbd61..4339e5c 100644
--- a/src/main/scala/DerivedFormats.scala
+++ b/src/main/scala/DerivedFormats.scala
@@ -5,7 +5,7 @@ import spray.json._
import scala.language.experimental.macros
-/** Mixin that enables automatic derivation of JSON formats for any product
+/** Mixin that enables derivation of JSON formats for any product
* (case classes) or coproduct (sealed traits) types. */
trait DerivedFormats { self: BasicFormats =>
type Typeclass[T] = JsonFormat[T]
@@ -75,14 +75,17 @@ trait DerivedFormats { self: BasicFormats =>
}
}
- implicit def derivedFormat[T]: RootJsonFormat[T] =
- macro DerivedFormatHelper.derivedFormat[T]
+ def jsonFormat[T]: RootJsonFormat[T] =
+ macro DerivedFormatMacros.derivedFormat[T]
}
-object DerivedFormats extends DerivedFormats with BasicFormats
+trait ImplicitDerivedFormats extends DerivedFormats { self: BasicFormats =>
+ implicit def implicitJsonFormat[T]: RootJsonFormat[T] =
+ macro DerivedFormatMacros.derivedFormat[T]
+}
-object DerivedFormatHelper {
+object DerivedFormatMacros {
import scala.reflect.macros.whitebox._
/** Utility that converts a magnolia-generated JsonFormat to a RootJsonFormat. */