aboutsummaryrefslogtreecommitdiff
path: root/yamlesque/src
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2018-04-08 16:24:00 -0700
committerJakob Odersky <jakob@odersky.com>2018-04-08 16:24:00 -0700
commit3fe7b06c5f357f34a5c227bc040effcbb259aef2 (patch)
tree1f83c575a6f59340403c7cfdd77969d61467f817 /yamlesque/src
parentf1fe50cba0c07d27f109a727c480b02639d140e0 (diff)
downloadyamlesque-3fe7b06c5f357f34a5c227bc040effcbb259aef2.tar.gz
yamlesque-3fe7b06c5f357f34a5c227bc040effcbb259aef2.tar.bz2
yamlesque-3fe7b06c5f357f34a5c227bc040effcbb259aef2.zip
Add spray compatibility layer
Diffstat (limited to 'yamlesque/src')
-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.scala8
-rw-r--r--yamlesque/src/main/scala/package.scala19
-rw-r--r--yamlesque/src/main/scala/yamlValues.scala1
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)