attoparsec-time-1: library/Attoparsec/Time/Validation.hs
module Attoparsec.Time.Validation where
import Attoparsec.Time.Prelude
data Validator a =
Validator String (a -> Bool)
run :: Show a => Validator a -> b -> (String -> b) -> a -> b
run (Validator name predicate) onNoError onError input =
if predicate input
then
onNoError
else
onError $
showString "Validator " $
shows name $
showString " failed on the following input: " $
show input
month :: (Num a, Ord a) => Validator a
month =
Validator "month" (liftA2 (&&) (>= 1) (<= 12))
monthDay :: (Num a, Ord a) => Validator a
monthDay =
Validator "monthDay" (liftA2 (&&) (>= 1) (<= 31))
weekDay :: (Num a, Ord a) => Validator a
weekDay =
Validator "weekDay" (liftA2 (&&) (>= 1) (<= 7))
hour :: (Num a, Ord a) => Validator a
hour =
Validator "hour" (liftA2 (&&) (>= 0) (< 24))
minute :: (Num a, Ord a) => Validator a
minute =
Validator "minute" (liftA2 (&&) (>= 0) (< 60))
second :: (Num a, Ord a) => Validator a
second =
Validator "second" (liftA2 (&&) (>= 0) (< 60))