Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. package controllers
  2.  
  3. import scala.language.higherKinds
  4.  
  5. import eu.timepit.refined.api.{RefType, Validate}
  6. import play.api.mvc.PathBindable
  7.  
  8.  
  9. object RefinedPathBindable {
  10.  
  11. implicit def refinedPathBindable[R[_, _], T, P](implicit
  12. baseTypeBinder: PathBindable[T],
  13. refType: RefType[R],
  14. validate: Validate[T, P]
  15. ): PathBindable[R[T, P]] = new PathBindable[R[T, P]] {
  16.  
  17. override def bind(key: String, value: String): Either[String, R[T, P]] = {
  18. baseTypeBinder.bind(key, value).right.flatMap { baseValue =>
  19. refType.refine[P](baseValue)
  20. }
  21. }
  22.  
  23. override def unbind(key: String, value: R[T, P]): String = {
  24. baseTypeBinder.unbind(key, refType.unwrap(value))
  25. }
  26. }
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement