diff options
author | Jakob Odersky <jakob@odersky.com> | 2018-04-08 16:24:00 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2018-04-08 16:24:00 -0700 |
commit | 3fe7b06c5f357f34a5c227bc040effcbb259aef2 (patch) | |
tree | 1f83c575a6f59340403c7cfdd77969d61467f817 /yamlesque | |
parent | f1fe50cba0c07d27f109a727c480b02639d140e0 (diff) | |
download | yamlesque-3fe7b06c5f357f34a5c227bc040effcbb259aef2.tar.gz yamlesque-3fe7b06c5f357f34a5c227bc040effcbb259aef2.tar.bz2 yamlesque-3fe7b06c5f357f34a5c227bc040effcbb259aef2.zip |
Add spray compatibility layer
Diffstat (limited to 'yamlesque')
-rw-r--r-- | yamlesque/src/main/scala/YamlPrinter.scala (renamed from yamlesque/src/main/scala/printers.scala) | 0 | ||||
-rw-r--r-- | yamlesque/src/main/scala/formats.scala | 8 | ||||
-rw-r--r-- | yamlesque/src/main/scala/package.scala | 19 | ||||
-rw-r--r-- | yamlesque/src/main/scala/yamlValues.scala | 1 |
4 files changed, 28 insertions, 0 deletions
diff --git a/yamlesque/src/main/scala/printers.scala b/yamlesque/src/main/scala/YamlPrinter.scala index 0a1c008..0a1c008 100644 --- a/yamlesque/src/main/scala/printers.scala +++ b/yamlesque/src/main/scala/YamlPrinter.scala diff --git a/yamlesque/src/main/scala/formats.scala b/yamlesque/src/main/scala/formats.scala new file mode 100644 index 0000000..0dbbacc --- /dev/null +++ b/yamlesque/src/main/scala/formats.scala @@ -0,0 +1,8 @@ +package yamlesque + +trait YamlReader[A] { + def read(yaml: YamlValue): A +} +trait YamlWriter[A] { + def write(a: A): YamlValue +} diff --git a/yamlesque/src/main/scala/package.scala b/yamlesque/src/main/scala/package.scala index fdb05d0..c40ca70 100644 --- a/yamlesque/src/main/scala/package.scala +++ b/yamlesque/src/main/scala/package.scala @@ -1,7 +1,26 @@ package yamlesque object `package` { + + def deserializationError(msg: String, + cause: Throwable = null, + fieldNames: List[String] = Nil) = + throw new DeserializationException(msg, cause, fieldNames) + def serializationError(msg: String) = throw new SerializationException(msg) + + implicit class RichAny[A](val any: A) extends AnyVal { + def toYaml(implicit writer: YamlWriter[A]): YamlValue = writer.write(any) + } + implicit class RichString(val str: String) extends AnyVal { def parseYaml: YamlValue = YamlParser(str.toIterator) } + } + +case class DeserializationException(msg: String, + cause: Throwable = null, + fieldNames: List[String] = Nil) + extends RuntimeException(msg, cause) + +class SerializationException(msg: String) extends RuntimeException(msg) diff --git a/yamlesque/src/main/scala/yamlValues.scala b/yamlesque/src/main/scala/yamlValues.scala index afe8e0b..958fccc 100644 --- a/yamlesque/src/main/scala/yamlValues.scala +++ b/yamlesque/src/main/scala/yamlValues.scala @@ -2,6 +2,7 @@ package yamlesque sealed trait YamlValue { def print: String = YamlValue.DefaultPrinter(this) + def convertTo[A: YamlReader]: A = implicitly[YamlReader[A]].read(this) } object YamlValue { val DefaultPrinter = new YamlPrinter(compact = true) |