项目作者: bartholomews

项目描述 :
Scala library for ISO enums
高级语言: Scala
项目地址: git://github.com/bartholomews/scala-iso.git
创建时间: 2020-05-03T15:50:22Z
项目社区:https://github.com/bartholomews/scala-iso

开源协议:MIT License

下载


CircleCI
License: MIT

scala-iso

Scala library for ISO enums

Maven Central

  1. libraryDependencies += "io.bartholomews" %% "scala-iso" % "0.1.3"

ISO 3166-1 alpha-2

CountryCodeAlpha2 is a StringEnum
(using enumeratum on the two-digits ISO string)

  1. import io.bartholomews.iso.CountryCodeAlpha2
  2. import io.circe._
  3. import io.circe.syntax._
  4. val italy: CountryCodeAlpha2 = CountryCodeAlpha2.ITALY
  5. implicit val encoder: Encoder[CountryCodeAlpha2] = c => Json.fromString(c.value)
  6. implicit val decoder: Decoder[CountryCodeAlpha2] = Decoder.decodeString.emap(
  7. str => CountryCodeAlpha2.values.find(_.value == str).toRight(s"Invalid ISO_3166-1 code: [$str]")
  8. )
  9. assert(italy.asJson == Json.fromString("IT"))
  10. assert("IT".asJson.as[CountryCodeAlpha2].map(_.name) == Right("Italy"))

ISO 639-1

LanguageCode is a StringEnum
(using enumeratum on the two-digits ISO string)

  1. import io.bartholomews.iso.LanguageCode
  2. import io.circe._
  3. import io.circe.syntax._
  4. val italy: LanguageCode = LanguageCode.ITALIAN
  5. implicit val encoder: Encoder[LanguageCode] = c => Json.fromString(c.value)
  6. implicit val decoder: Decoder[LanguageCode] = Decoder.decodeString.emap(
  7. str =>
  8. LanguageCode.values
  9. .find(_.value == str)
  10. .toRight(s"Invalid ISO_639 code: [$str]")
  11. )
  12. assert(italy.asJson == Json.fromString("it"))
  13. assert("it".asJson.as[LanguageCode].map(_.name) == Right("Italian"))