davegurnell / checklist

Validation library for Scala.
Apache License 2.0
47 stars 11 forks source link

Parsing Lib Integrations? #14

Open Jacoby6000 opened 6 years ago

Jacoby6000 commented 6 years ago

I think it'd be very helpful to provide integrations with json/xml/ parsing libs. Ideally we'd provide a function decoder a -> validator a b -> decoder b. This way users can transparently use checklist for validation during parsing.

Example for something like circe:

def validatingDecoder[A, B](
  handleWarnings: (WarningMessages, B) => DecodeResult[B])(
  implicit decoder: Decoder[A], validator: Validator[A, B]
): Decoder[B] = 
  decoder.emap(validator.validate(_).fold(
    handleErrors = validatorErrorToCirceError,
    handleWarnings = handleWarnings,
    handleSuccess = DecodeResult.success(_)
  ))
Jacoby6000 commented 6 years ago

Tighter integrations than the one above could reduce overhead a bit, but I think the above is a good first-pass.