Modules
The following sections describe the additional modules.
Circe
The ciris-circe
module provides ConfigDecoder
s for JSON using Circe.
import ciris.circe._
import ciris.ConfigDecoder
import io.circe.{Decoder, Json}
ConfigDecoder[String, Json]
// res0: ConfigDecoder[String, Json] = ConfigDecoder$725892022
case class SerialNumber(value: String)
object SerialNumber {
implicit val serialNumberDecoder: Decoder[SerialNumber] =
Decoder[String].map(apply)
}
circeConfigDecoder[SerialNumber]("SerialNumber")
// res1: ConfigDecoder[String, SerialNumber] = ConfigDecoder$1225461675
Circe YAML
The ciris-circe-yaml
module provides ConfigDecoder
s for YAML using circe-yaml
.
import ciris.circe.yaml._
import ciris.ConfigDecoder
import io.circe.{Decoder, Json}
ConfigDecoder[String, Json]
// res3: ConfigDecoder[String, Json] = ConfigDecoder$1040656697
case class SerialNumber(value: String)
object SerialNumber {
implicit val serialNumberDecoder: Decoder[SerialNumber] =
Decoder[String].map(apply)
}
circeYamlConfigDecoder[SerialNumber]("SerialNumber")
// res4: ConfigDecoder[String, SerialNumber] = ConfigDecoder$1462004666
Enumeratum
The ciris-enumeratum
module provides ConfigDecoder
s for Enumeratum enumerations.
For regular Enum
s, also mix in CirisEnum
to derive a ConfigDecoder
instance.
import enumeratum.{CirisEnum, Enum, EnumEntry}
import enumeratum.EnumEntry.Lowercase
sealed trait Suit extends EnumEntry with Lowercase
object Suit extends Enum[Suit] with CirisEnum[Suit] {
case object Clubs extends Suit
case object Diamonds extends Suit
case object Hearts extends Suit
case object Spades extends Suit
val values = findValues
}
ConfigDecoder[String, Suit]
// res5: ConfigDecoder[String, Suit] = ConfigDecoder$752697253
For ValueEnum
s, also mix in the matching CirisValueEnum
to derive a ConfigDecoder
instance.
import enumeratum.values.{StringCirisEnum, StringEnum, StringEnumEntry}
sealed abstract class Color(val value: String) extends StringEnumEntry
object Color extends StringEnum[Color] with StringCirisEnum[Color] {
case object Red extends Color("red")
case object Green extends Color("green")
case object Blue extends Color("blue")
val values = findValues
}
ConfigDecoder[String, Color]
// res6: ConfigDecoder[String, Color] = ConfigDecoder$2141496772
Http4s
The ciris-http4s
module provides ConfigDecoder
s for the http4s Uri
type.
import ciris.http4s._
import org.http4s.Uri
ConfigDecoder[String, Uri]
// res7: ConfigDecoder[String, Uri] = ConfigDecoder$2020414952
Refined
The ciris-refined
module provides ConfigDecoder
s for refined refinement types.
import ciris.refined._
import cats.implicits._
import eu.timepit.refined.types.numeric.PosInt
ConfigDecoder[String, PosInt]
// res8: ConfigDecoder[String, PosInt] = ConfigDecoder$207673572
Squants
The ciris-squants
module provides ConfigDecoder
s for squants quantities.
import ciris.squants._
import squants.market.Money
ConfigDecoder[String, Money]
// res9: ConfigDecoder[String, Money] = ConfigDecoder$1225125594