private def pascalCaseToHyphenated()

in json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala [26:46]


  private def pascalCaseToHyphenated(s: String): String =
    LowerCaseFollowedByUpperCase.replaceAllIn(s, m => m.group(1) + "-" + m.group(2)).toLowerCase

  implicit def thriftEnumEncoder[T <: ThriftEnum]: Encoder[T] = Encoder[String].contramap(t => pascalCaseToHyphenated(t.name))

  implicit def officeEncoder[A <: Office]: Encoder[A] = Encoder[String].contramap(o => o.name.toUpperCase)

  implicit val dateTimeEncoder: Encoder[CapiDateTime] = genDateTimeEncoder()
  implicit val debugEncoder: Encoder[Debug] = Encoder.instance { d =>
    Json.fromJsonObject(
      JsonObject(
        "lastSeenByPorterAt" -> d.lastSeenByPorterAt.fold(Json.Null)(_.asJson(genDateTimeEncoder(false))),
        "revisionSeenByPorter" -> d.revisionSeenByPorter.fold(Json.Null)(_.asJson),
        "contentSource" -> d.contentSource.fold(Json.Null)(_.asJson),
        "originatingSystem" -> d.originatingSystem.fold(Json.Null)(_.asJson)
      ).filter {
        case (_, Json.Null) => false
        case _ => true
      }
    )
  }