summaryrefslogtreecommitdiff
path: root/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/jsdep/Origin.scala
blob: a2c6b2d67962705f51200a82cbcde38a56bd8a4b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package scala.scalajs.tools.jsdep

import scala.scalajs.tools.json._

/** The place a JSDependency originated from */
final class Origin(val moduleName: String, val configuration: String) {
  override def toString(): String = s"$moduleName:$configuration"
}

object Origin {
  implicit object OriginJSONSerializer extends JSONSerializer[Origin] {
    def serialize(x: Origin): JSON = {
      new JSONObjBuilder()
        .fld("moduleName",    x.moduleName)
        .fld("configuration", x.configuration)
        .toJSON
    }
  }

  implicit object OriginDeserializer extends JSONDeserializer[Origin] {
    def deserialize(x: JSON): Origin = {
      val obj = new JSONObjExtractor(x)
      new Origin(
          obj.fld[String]("moduleName"),
          obj.fld[String]("configuration"))
    }
  }
}