Ciris

Ciris

  • Blog
  • API Docs
  • Documentation
  • GitHub

›Documentation

Documentation

  • Overview
  • Quick Example
  • Configurations
  • Modules

Modules

The following sections describe the additional modules.

Circe

The ciris-circe module provides ConfigDecoders for JSON using Circe.

import ciris.circe._
import ciris.ConfigDecoder
import io.circe.{Decoder, Json}

ConfigDecoder[String, Json]
// res0: ConfigDecoder[String, Json] = ConfigDecoder$681327798

case class SerialNumber(value: String)

object SerialNumber {
  implicit val serialNumberDecoder: Decoder[SerialNumber] =
    Decoder[String].map(apply)
}

circeConfigDecoder[SerialNumber]("SerialNumber")
// res1: ConfigDecoder[String, SerialNumber] = ConfigDecoder$2031919736

Circe YAML

The ciris-circe-yaml module provides ConfigDecoders 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$886197126

case class SerialNumber(value: String)

object SerialNumber {
  implicit val serialNumberDecoder: Decoder[SerialNumber] =
    Decoder[String].map(apply)
}

circeYamlConfigDecoder[SerialNumber]("SerialNumber")
// res4: ConfigDecoder[String, SerialNumber] = ConfigDecoder$1770971542

Enumeratum

The ciris-enumeratum module provides ConfigDecoders for Enumeratum enumerations.

For regular Enums, 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$2057096876

For ValueEnums, 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$1856173906

Http4s

The ciris-http4s module provides ConfigDecoders for the http4s Uri type.

import ciris.http4s._
import org.http4s.Uri

ConfigDecoder[String, Uri]
// res7: ConfigDecoder[String, Uri] = ConfigDecoder$1217011579

Refined

The ciris-refined module provides ConfigDecoders 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$1444332973

Squants

The ciris-squants module provides ConfigDecoders for squants quantities.

import ciris.squants._
import squants.market.Money

ConfigDecoder[String, Money]
// res9: ConfigDecoder[String, Money] = ConfigDecoder$1248036973
← Configurations
  • Circe
  • Circe YAML
  • Enumeratum
  • Http4s
  • Refined
  • Squants

Copyright © 2017-2022 Viktor Lövgren.
Icon designed by Freepik from Flaticon.