diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2013-03-28 22:12:53 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2016-11-10 18:03:21 +0100 |
commit | 8d91a5a9141393e6c738d8624f7fe5d1bbdb28f9 (patch) | |
tree | a51880194eb31b00611be8dd6d713d3072bd2f2f /Scala/recfun/project/RichJsValue.scala | |
parent | 6b137fb0ee01b203f4008ab85ad88a1c1aec3cbe (diff) | |
download | coursera-8d91a5a9141393e6c738d8624f7fe5d1bbdb28f9.zip coursera-8d91a5a9141393e6c738d8624f7fe5d1bbdb28f9.tar.gz |
Scala : add recfun
Diffstat (limited to 'Scala/recfun/project/RichJsValue.scala')
-rw-r--r-- | Scala/recfun/project/RichJsValue.scala | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Scala/recfun/project/RichJsValue.scala b/Scala/recfun/project/RichJsValue.scala new file mode 100644 index 0000000..ca9ad94 --- /dev/null +++ b/Scala/recfun/project/RichJsValue.scala @@ -0,0 +1,28 @@ +import cc.spray.json._ + +class RichJsValue(js: JsValue) { + def \ (name: String): JsValue = js match { + case JsObject(fields) => + fields(name) + case _ => + throw new IllegalArgumentException("Cannot select field "+ name +" from non-JsObject "+ js) + } + + def hasFieldNamed(name: String) = js match { + case JsObject(fields) => + fields.contains(name) + case _ => + false + } + + def arrayValues: List[JsValue] = js match { + case JsArray(values) => + values + case _ => + throw new IllegalArgumentException("Trying to select values from non-JsArray"+ js) + } +} + +object RichJsValue { + implicit def enrichJsValue(js: JsValue) = new RichJsValue(js) +} |