summaryrefslogtreecommitdiff
path: root/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/json/JSONSerializer.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/json/JSONSerializer.scala')
-rw-r--r--examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/json/JSONSerializer.scala32
1 files changed, 32 insertions, 0 deletions
diff --git a/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/json/JSONSerializer.scala b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/json/JSONSerializer.scala
new file mode 100644
index 0000000..e26c92a
--- /dev/null
+++ b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/json/JSONSerializer.scala
@@ -0,0 +1,32 @@
+package scala.scalajs.tools.json
+
+trait JSONSerializer[T] {
+ def serialize(x: T): JSON
+}
+
+object JSONSerializer {
+
+ implicit object stringJSON extends JSONSerializer[String] {
+ def serialize(x: String): JSON = Impl.fromString(x)
+ }
+
+ implicit object intJSON extends JSONSerializer[Int] {
+ def serialize(x: Int): JSON = Impl.fromNumber(x)
+ }
+
+ implicit object booleanJSON extends JSONSerializer[Boolean] {
+ def serialize(x: Boolean): JSON = Impl.fromBoolean(x)
+ }
+
+ implicit def listJSON[T : JSONSerializer] = new JSONSerializer[List[T]] {
+ def serialize(x: List[T]): JSON = Impl.fromList(x.map(_.toJSON))
+ }
+
+ implicit def mapJSON[V : JSONSerializer] = {
+ new JSONSerializer[Map[String, V]] {
+ def serialize(x: Map[String, V]): JSON =
+ Impl.fromMap(x.mapValues(_.toJSON))
+ }
+ }
+
+}