Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import play.api.libs.json.{Json, JsValue}
- import scala.collection.mutable
- trait Writeable {
- }
- case class WriteableInt(v: Int) extends Writeable
- case class WriteableLong(v: Long) extends Writeable
- case class WriteableString(v: String) extends Writeable
- case class WriteableJson(v: JsValue)
- object WriteableJson {
- implicit def jsonToWriteable(jsValue: WriteableJson): Writeable = new WriteableString(jsValue.toString())
- }
- object Writeable {
- implicit val w: Writer[Writeable] = new Writer[Writeable]()
- implicit def intToWriteable(i: Int): Writeable = new WriteableInt(i)
- implicit def longToWriteable(i: Long): Writeable = new WriteableLong(i)
- implicit def stringToWriteable(i: String): Writeable = new WriteableString(i)
- }
- class Writer[T] {
- def write(v: T) = println(v.toString)
- }
- class TestBindable {
- val params = mutable.Map[String,Writeable]()
- def bind(p: Map[String,Writeable]) = params ++= p
- def proceed() = {
- for {
- (k,v) <- params
- }{
- write(v)
- }
- }
- def write[T](v: T)(implicit writer: Writer[T]) = writer.write(v)
- }
- val t = new TestBindable
- t.bind(Map("int" -> 1, "long" -> 1l, "string" -> "foo", "json" -> new WriteableJson(Json.obj("foo" -> "bar"))))
- t.proceed()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement