diff --git a/src/Validate.elm b/src/Validate.elm index 211abfa..c48ac70 100644 --- a/src/Validate.elm +++ b/src/Validate.elm @@ -16,6 +16,7 @@ module Validate , isBlank , isInt , isValidEmail + , preMap , validate ) @@ -57,6 +58,11 @@ module Validate @docs all, any, firstError +# Reusing validators + +@docs preMap + + # Checking values directly @docs isBlank, isInt, isValidEmail @@ -220,6 +226,33 @@ ifFalse test error = +-- REUSING VALIDATORS -- + + +{-| Reuse a validator in a larger context. + + import Validate exposing (ifBlank, preMap) + + type alias User = + { name : String + } + + nameValidator : Validator String String + nameValidator = + ifBlank identity + "Please enter a name" + + userValidator : Validator String User + userValidator = + preMap .user nameValidator + +-} +preMap : (large -> small) -> Validator error small -> Validator error large +preMap f (Validator validator) = + Validator (f >> validator) + + + -- COMBINING VALIDATORS --