From 3ccb0768cb5ccb0c4b577742ee7f1ec7d3b9c83f Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Tue, 30 Oct 2018 15:41:34 +0100 Subject: Introduce JsonParserSettings to allow customization of parsing --- src/main/scala/spray/json/JsonParser.scala | 5 ++++- src/main/scala/spray/json/JsonParserSettings.scala | 10 ++++++++++ src/main/scala/spray/json/package.scala | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 src/main/scala/spray/json/JsonParserSettings.scala diff --git a/src/main/scala/spray/json/JsonParser.scala b/src/main/scala/spray/json/JsonParser.scala index 71c4c11..f29c062 100644 --- a/src/main/scala/spray/json/JsonParser.scala +++ b/src/main/scala/spray/json/JsonParser.scala @@ -26,12 +26,15 @@ import java.nio.charset.Charset */ object JsonParser { def apply(input: ParserInput): JsValue = new JsonParser(input).parseJsValue() + def apply(input: ParserInput, settings: JsonParserSettings): JsValue = new JsonParser(input, settings).parseJsValue() class ParsingException(val summary: String, val detail: String = "") extends RuntimeException(if (summary.isEmpty) detail else if (detail.isEmpty) summary else summary + ":" + detail) } -class JsonParser(input: ParserInput) { +class JsonParser(input: ParserInput, settings: JsonParserSettings = JsonParserSettings.default) { + def this(input: ParserInput) = this(input, JsonParserSettings.default) + import JsonParser.ParsingException private[this] val sb = new JStringBuilder diff --git a/src/main/scala/spray/json/JsonParserSettings.scala b/src/main/scala/spray/json/JsonParserSettings.scala new file mode 100644 index 0000000..31692fd --- /dev/null +++ b/src/main/scala/spray/json/JsonParserSettings.scala @@ -0,0 +1,10 @@ +package spray.json + +trait JsonParserSettings { + +} +object JsonParserSettings { + val default: JsonParserSettings = SettingsImpl() + + private case class SettingsImpl() extends JsonParserSettings +} \ No newline at end of file diff --git a/src/main/scala/spray/json/package.scala b/src/main/scala/spray/json/package.scala index 37d63c2..a8a42f0 100644 --- a/src/main/scala/spray/json/package.scala +++ b/src/main/scala/spray/json/package.scala @@ -24,7 +24,7 @@ package object json { def serializationError(msg: String) = throw new SerializationException(msg) def jsonReader[T](implicit reader: JsonReader[T]) = reader - def jsonWriter[T](implicit writer: JsonWriter[T]) = writer + def jsonWriter[T](implicit writer: JsonWriter[T]) = writer implicit def enrichAny[T](any: T) = new RichAny(any) implicit def enrichString(string: String) = new RichString(string) @@ -48,6 +48,7 @@ package json { @deprecated("deprecated in favor of parseJson", "1.2.6") def asJson: JsValue = parseJson def parseJson: JsValue = JsonParser(string) + def parseJson(settings: JsonParserSettings): JsValue = JsonParser(string, settings) } @deprecated("use RichAny", "1.3.4") -- cgit v1.2.3