src/Pure/General/json.scala
changeset 67850 3e9fe7a84b5d
parent 67843 ff561f6e0a8e
child 67857 262d62a4c32b
equal deleted inserted replaced
67849:d4c8b2cf685f 67850:3e9fe7a84b5d
    18   type S = String
    18   type S = String
    19 
    19 
    20   object Object
    20   object Object
    21   {
    21   {
    22     type T = Map[String, JSON.T]
    22     type T = Map[String, JSON.T]
    23     val empty: T = Map.empty
    23     val empty: Object.T = Map.empty
       
    24 
       
    25     def apply(entries: (String, JSON.T)*): Object.T = Map(entries:_*)
    24 
    26 
    25     def unapply(obj: T): Option[Object.T] =
    27     def unapply(obj: T): Option[Object.T] =
    26       obj match {
    28       obj match {
    27         case m: Map[_, _] if m.keySet.forall(_.isInstanceOf[String]) =>
    29         case m: Map[_, _] if m.keySet.forall(_.isInstanceOf[String]) =>
    28           Some(m.asInstanceOf[Object.T])
    30           Some(m.asInstanceOf[Object.T])
   297 
   299 
   298   /* object values */
   300   /* object values */
   299 
   301 
   300   def optional(entry: (String, Option[T])): Object.T =
   302   def optional(entry: (String, Option[T])): Object.T =
   301     entry match {
   303     entry match {
   302       case (name, Some(x)) => Map(name -> x)
   304       case (name, Some(x)) => Object(name -> x)
   303       case (_, None) => Object.empty
   305       case (_, None) => Object.empty
   304     }
   306     }
   305 
   307 
   306   def value(obj: T, name: String): Option[T] =
   308   def value(obj: T, name: String): Option[T] =
   307     obj match {
   309     obj match {