diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/cc/spray/json/JsonPrinter.scala | 15 | ||||
-rw-r--r-- | src/test/scala/cc/spray/json/CompactPrinterSpec.scala | 3 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/main/scala/cc/spray/json/JsonPrinter.scala b/src/main/scala/cc/spray/json/JsonPrinter.scala index 6f1b20a..44ee9de 100644 --- a/src/main/scala/cc/spray/json/JsonPrinter.scala +++ b/src/main/scala/cc/spray/json/JsonPrinter.scala @@ -24,9 +24,20 @@ import java.lang.StringBuilder */ trait JsonPrinter extends (JsValue => String) { - def apply(x: JsValue) = { + def apply(x: JsValue): String = apply(x, None) + + def apply(x: JsValue, jsonpCallback: String): String = apply(x, Some(jsonpCallback)) + + def apply(x: JsValue, jsonpCallback: Option[String]): String = { val sb = new StringBuilder - print(x, sb) + jsonpCallback match { + case Some(callback) => { + sb.append(callback).append('(') + print(x, sb) + sb.append(')'); + } + case None => print(x, sb) + } sb.toString } diff --git a/src/test/scala/cc/spray/json/CompactPrinterSpec.scala b/src/test/scala/cc/spray/json/CompactPrinterSpec.scala index a517cd1..4ca4aac 100644 --- a/src/test/scala/cc/spray/json/CompactPrinterSpec.scala +++ b/src/test/scala/cc/spray/json/CompactPrinterSpec.scala @@ -43,6 +43,9 @@ class CompactPrinterSpec extends Specification { CompactPrinter(JsArray(JsNull, JsNumber(1.23), JsObject(JsField("key", true)))) mustEqual """[null,1.23,{"key":true}]""" ) + "properly print a JSON padding (JSONP) if requested" in { + CompactPrinter(JsTrue, Some("customCallback")) mustEqual("customCallback(true)") + } } }
\ No newline at end of file |