Skip to content

Instantly share code, notes, and snippets.

@elyphas
Created April 19, 2020 15:13
Show Gist options
  • Save elyphas/b28d6e0e0e65d05173538e1363ca90e5 to your computer and use it in GitHub Desktop.
Save elyphas/b28d6e0e0e65d05173538e1363ca90e5 to your computer and use it in GitHub Desktop.
trait TransformData[A] {
def transform(a: A): Map[String, String]
}
object TransformData {
implicit def genericTransform[A, ARepr <: HList](implicit gen: LabelledGeneric.Aux[A, ARepr],
toMap: ops.record.ToMap[ARepr]
): TransformData[A] =
new TransformData[A] {
override def transform(rpt: A): Map[String, String] = {
val genRecord = gen.to(rpt)
toMap(genRecord).map { case (k: Symbol, value) =>
val valor = value match {
case date: Date =>
val jsDate = new js.Date(date.getTime().toDouble)
(jsDate.getDay()+1) + "/" + (jsDate.getMonth()+1) + "/" + jsDate.getFullYear()
case Fechas(f) => f
case Some(v) => v
case v => if ( v == None) "" else v
}
k.name.toString -> valor.toString
}
}
}
def apply[A](rpt: A)(implicit transformer: TransformData[A]): Map[String, String] = transformer.transform(rpt)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment