Advertisement
Guest User

Untitled

a guest
Mar 18th, 2016
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1.  
  2. open System
  3.  
  4. open Conductor
  5. open Conductor.Validator.Infixes
  6.  
  7. type NewUser = {
  8. name: string
  9. password: string }
  10.  
  11. let name nu = nu.name
  12. let password nu = nu.password
  13.  
  14. let nameRules =
  15. [ Validators.String.notEmpty "Name shouldn't be empty"
  16. Validator.map (fun s -> s.Trim())
  17. Validators.String.length 3 40 "Name must be between 3 and 40 characters."
  18. ] |> Validator.chain
  19.  
  20. let namePasswordChecker =
  21. Validator.pred (fun user -> user.name <> user.password) "Password cannot be same as name"
  22.  
  23. let passwordRules =
  24. [ Validators.String.notEmpty "Password can't be empty"
  25. Validators.Seq.exists Char.IsUpper "Password must contain at least one upper case letter"
  26. ] |> Validator.chain
  27.  
  28. let newUserValidator =
  29. [ name >--> nameRules
  30. password >--> passwordRules
  31. namePasswordChecker
  32. ] |> Validator.chain
  33.  
  34. [<EntryPoint>]
  35. let main argv =
  36. let validate = Validator.validate newUserValidator
  37.  
  38. printfn "%A" (validate {name = "Don Syme"; password = "Monads123"})
  39. printfn "%A" (validate {name = "A dude"; password = ""})
  40. printfn "%A" (validate {name = "Hunter2"; password = "Hunter2"})
  41.  
  42. 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement