Skip to content
This repository was archived by the owner on Mar 8, 2020. It is now read-only.

Commit 52e3e65

Browse files
committed
v2: convenience for JNode literal creation
Signed-off-by: Alexander Bezzubov <[email protected]>
1 parent 0c294f3 commit 52e3e65

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

src/main/scala/org/bblfsh/client/v2/JNode.scala

+20-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.bblfsh.client.v2
22

3+
import java.io.Serializable
4+
35
import scala.collection.mutable
46

57
/** UAST nodes representation on the JVM side.
@@ -46,15 +48,31 @@ case class JFloat(num: Double) extends JNode
4648
case class JUint(num: Long) extends JNode
4749
case class JInt(num: Long) extends JNode
4850
case class JBool(value: Boolean) extends JNode
51+
4952
case class JObject(obj: mutable.Buffer[JField]) extends JNode {
5053
def this() = this(mutable.Buffer[JField]())
5154
def add(k: String, v: JNode) = {
5255
obj += ((k, v))
5356
}
5457
}
58+
case object JObject {
59+
def apply[T <: (Product with Serializable with JNode)](ns: (String, T)*) = {
60+
val jo = new JObject()
61+
jo.obj ++= ns
62+
jo
63+
}
64+
}
65+
5566
case class JArray(arr: mutable.Buffer[JNode]) extends JNode {
5667
def this(size: Int) = this(new mutable.ArrayBuffer[JNode](size))
57-
def add(v: JNode) = {
58-
arr += v
68+
def add(n: JNode) = {
69+
arr += n
5970
}
6071
}
72+
case object JArray {
73+
def apply[T <: (Product with Serializable with JNode)](ns: T *) = {
74+
val ja = new JArray(ns.length)
75+
ja.arr ++= ns
76+
ja
77+
}
78+
}

src/test/scala/org/bblfsh/client/v2/JNodeTest.scala

+4-6
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@ package org.bblfsh.client.v2
22

33
import org.scalatest.{BeforeAndAfter, FlatSpec, Matchers}
44

5-
import scala.collection.mutable.Buffer
6-
75

86
class JNodeTest extends FlatSpec
97
with BeforeAndAfter
108
with Matchers {
119

12-
val rootTree = JArray(Buffer(
13-
JObject(Buffer(
10+
val rootTree = JArray(
11+
JObject(
1412
"k1" -> JString("v1"),
1513
"k2" -> JBool(false)
16-
)),
14+
),
1715
JString("test")
18-
))
16+
)
1917

2018
"JNode" should "expose children" in {
2119
rootTree.children.size shouldEqual 2

0 commit comments

Comments
 (0)