Rules for parsing/validating/transforming Array[String] as typically returned from CSV parsers.
Rules for parsing/validating/transforming Array[String] as typically returned from CSV parsers.
{{ case class Contact(name: String, email: String, birthday: Option[LocalDate])
val contactReads = From[Delimited] { => ( ( \ 0).read[String] and ( \ 1).read(email) and ( \ 2).read(optionR[LocalDate](equalTo("N/A"))) )(Contact)}
val csv1 = "Ian Hummel,[email protected],1981-07-24".split(",") val csv2 = "Jane Doe,[email protected],N/A".split(",")
contactReads.validate(csv1) // returns Valid(Contact("Ian Hummel", "[email protected]", Some(new LocalDate(1981, 7, 24)))) contactReads.validate(csv2) // returns Valid(Contact("Jane Doe", "[email protected]", None)) }}