ijuma / argonaut-shapeless

Automatic argonaut codec derivation with shapeless

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

argonaut-shapeless

Automatic argonaut codec derivation with shapeless

Build Status

Usage

Add to your build.sbt

resolvers += Resolver.sonatypeRepo("releases")

libraryDependencies +=
  "com.github.alexarchambault" %% "argonaut-shapeless_6.1" % "0.1.0"

If you are using scala 2.10.x, also add the macro paradise plugin to your build,

libraryDependencies +=
  compilerPlugin("org.scalamacros" % "paradise" % "2.0.1" cross CrossVersion.full)

Then import the content of argonaut.Shapeless along with the one of argonaut.Argonaut close to where you want codecs to be automatically available for case classes / sealed hierarchies:

import argonaut._, Argonaut._, Shapeless._

//  If you defined:

// case class Foo(i: Int, s: String, blah: Boolean)
// case class Bar(foo: Foo, other: String)

// sealed trait Base
// case class BaseIntString(i: Int, s: String) extends Base
// case class BaseDoubleBoolean(d: Double, b: Boolean) extends Base

//  then you can now do

implicitly[EncodeJson[Foo]]
implicitly[EncodeJson[Bar]]
implicitly[EncodeJson[Base]]

implicitly[DecodeJson[Foo]]
implicitly[DecodeJson[Bar]]
implicitly[DecodeJson[Base]]

For the development version, add instead to your build.sbt,

resolvers += Resolver.sonatypeRepo("snapshots")

libraryDependencies +=
  "com.github.alexarchambault" %% "argonaut-shapeless_6.1" % "0.1.1-SHAPSHOT"

(Macro paradise plugin also necessary with scala 2.10, see above.)

Available for scala 2.10 and 2.11. Uses argonaut 6.1-M5 and shapeless 2.1.0-RC1.

Released under the BSD license. See LICENSE file for more details.

Based on an early (non Lazy-based) automatic codec derivation in argonaut by Maxwell Swadling, Travis Brown, and Mark Hibberd.

Gitter

About

Automatic argonaut codec derivation with shapeless

License:Other


Languages

Language:Scala 100.0%