attoparsec-time-1.0.3.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))