Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- open Conductor
- open Conductor.Validator.Infixes
- type NewUser = {
- name: string
- password: string }
- let name nu = nu.name
- let password nu = nu.password
- let nameRules =
- [ Validators.String.notEmpty "Name shouldn't be empty"
- Validator.map (fun s -> s.Trim())
- Validators.String.length 3 40 "Name must be between 3 and 40 characters."
- ] |> Validator.chain
- let namePasswordChecker =
- Validator.pred (fun user -> user.name <> user.password) "Password cannot be same as name"
- let passwordRules =
- [ Validators.String.notEmpty "Password can't be empty"
- Validators.Seq.exists Char.IsUpper "Password must contain at least one upper case letter"
- ] |> Validator.chain
- let newUserValidator =
- [ name >--> nameRules
- password >--> passwordRules
- namePasswordChecker
- ] |> Validator.chain
- [<EntryPoint>]
- let main argv =
- let validate = Validator.validate newUserValidator
- printfn "%A" (validate {name = "Don Syme"; password = "Monads123"})
- printfn "%A" (validate {name = "A dude"; password = ""})
- printfn "%A" (validate {name = "Hunter2"; password = "Hunter2"})
- 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement