equal
deleted
inserted
replaced
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 { |