Skip to content

Instantly share code, notes, and snippets.

@jacoblyles
Last active January 3, 2016 13:19
Show Gist options
  • Select an option

  • Save jacoblyles/8468924 to your computer and use it in GitHub Desktop.

Select an option

Save jacoblyles/8468924 to your computer and use it in GitHub Desktop.

Revisions

  1. jacoblyles revised this gist Jan 17, 2014. 1 changed file with 3 additions and 2 deletions.
    5 changes: 3 additions & 2 deletions flatten.scala
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,6 @@
    def flattenJsObject(obj: JsObject): JsObject = {
    val newObj = obj.fields.map { case (name, value) =>
    val newObj = obj.fields.map {
    case (name, value) =>
    value match {
    case o: JsObject =>
    Some((name, o))
    @@ -9,7 +10,7 @@ def flattenJsObject(obj: JsObject): JsObject = {
    case (prev, next) =>
    JsObject(prev.fields.filterNot { case (name, value) => name == next._1 }) ++ next._2
    }
    if (newObj.fields.exists { case (name, value) => value.isInstanceOf[JsObject] }) {
    if (newObj.fields.exists { case (name, value) => value.isInstanceOf[JsObject] }) {
    flattenJsObject(newObj)
    } else {
    newObj
  2. jacoblyles revised this gist Jan 17, 2014. 1 changed file with 9 additions and 8 deletions.
    17 changes: 9 additions & 8 deletions flatten.scala
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,15 @@
    def flattenJsObject(obj: JsObject): JsObject = {
    val newObj = obj.fields.map { case (name, value) =>
    value match {
    case o: JsObject =>
    Some((name, o))
    case _ => None
    }
    }.flatMap(o => o).foldLeft(obj) { case (prev, next) =>
    JsObject(prev.fields.filterNot { case(name, value) => name != next._1 }) ++ next._2
    value match {
    case o: JsObject =>
    Some((name, o))
    case _ => None
    }
    }.flatMap(o => o).foldLeft(obj) {
    case (prev, next) =>
    JsObject(prev.fields.filterNot { case (name, value) => name == next._1 }) ++ next._2
    }
    if (newObj.fields.exists { case (name, value) => value.isInstanceOf[JsObject]} ){
    if (newObj.fields.exists { case (name, value) => value.isInstanceOf[JsObject] }) {
    flattenJsObject(newObj)
    } else {
    newObj
  3. jacoblyles created this gist Jan 17, 2014.
    16 changes: 16 additions & 0 deletions flatten.scala
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,16 @@
    def flattenJsObject(obj: JsObject): JsObject = {
    val newObj = obj.fields.map { case (name, value) =>
    value match {
    case o: JsObject =>
    Some((name, o))
    case _ => None
    }
    }.flatMap(o => o).foldLeft(obj) { case (prev, next) =>
    JsObject(prev.fields.filterNot { case(name, value) => name != next._1 }) ++ next._2
    }
    if (newObj.fields.exists { case (name, value) => value.isInstanceOf[JsObject]} ){
    flattenJsObject(newObj)
    } else {
    newObj
    }
    }