validate-input-0.4.0.0: Input validation combinator library

Safe HaskellNone
LanguageHaskell2010

Data.Validator

Contents

Synopsis

Core monad and runners

type ValidationM e = ValidationT e Identity #

The validation monad

data ValidationT e m a #

The validation monad transformer

Instances

MonadTrans (ValidationT e) # 

Methods

lift :: Monad m => m a -> ValidationT e m a #

Monad m => Monad (ValidationT e m) # 

Methods

(>>=) :: ValidationT e m a -> (a -> ValidationT e m b) -> ValidationT e m b #

(>>) :: ValidationT e m a -> ValidationT e m b -> ValidationT e m b #

return :: a -> ValidationT e m a #

fail :: String -> ValidationT e m a #

Monad m => Functor (ValidationT e m) # 

Methods

fmap :: (a -> b) -> ValidationT e m a -> ValidationT e m b #

(<$) :: a -> ValidationT e m b -> ValidationT e m a #

Monad m => Applicative (ValidationT e m) # 

Methods

pure :: a -> ValidationT e m a #

(<*>) :: ValidationT e m (a -> b) -> ValidationT e m a -> ValidationT e m b #

(*>) :: ValidationT e m a -> ValidationT e m b -> ValidationT e m b #

(<*) :: ValidationT e m a -> ValidationT e m b -> ValidationT e m a #

(Monoid e, Monad m) => MonadPlus (ValidationT e m) # 

Methods

mzero :: ValidationT e m a #

mplus :: ValidationT e m a -> ValidationT e m a -> ValidationT e m a #

(Monoid e, Monad m) => Alternative (ValidationT e m) # 

Methods

empty :: ValidationT e m a #

(<|>) :: ValidationT e m a -> ValidationT e m a -> ValidationT e m a #

some :: ValidationT e m a -> ValidationT e m [a] #

many :: ValidationT e m a -> ValidationT e m [a] #

type ValidationRule e a = ValidationRuleT e Identity a #

A validation rule. Combine using (>=>) or (<=<)

type ValidationRuleT e m a = TransValidationRuleT e m a a #

A validation rule. Combine using (>=>) or (<=<)

type TransValidationRule e a b = TransValidationRuleT e Identity a b #

A transforming validation rule. Combine using (>=>) or (<=<)

type TransValidationRuleT e m a b = a -> ValidationT e m b #

A transforming validation rule. Combine using (>=>) or (<=<)

runValidator :: TransValidationRule e a b -> a -> Either e b #

Run a validation on a type a

runValidatorT :: Monad m => TransValidationRuleT e m a b -> a -> m (Either e b) #

Run a validation on a type a

Combinators

(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c infixr 1 #

Left-to-right Kleisli composition of monads.

(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c infixr 1 #

Right-to-left Kleisli composition of monads. (>=>), with the arguments flipped.

Note how this operator resembles function composition (.):

(.)   ::            (b ->   c) -> (a ->   b) -> a ->   c
(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c

Checks

minLength :: (Monad m, HasLength a) => Int64 -> e -> ValidationRuleT e m a #

Check that the value is at least N elements long

maxLength :: (Monad m, HasLength a) => Int64 -> e -> ValidationRuleT e m a #

Check that the value is at maxium N elements long

lengthBetween :: (Monad m, HasLength a) => Int64 -> Int64 -> e -> ValidationRuleT e m a #

Check that the value's length is between N and M

notEmpty :: (Monad m, HasLength a) => e -> ValidationRuleT e m a #

Specialized minLength with N = 1

largerThan :: (Monad m, Ord a) => a -> e -> ValidationRuleT e m a #

Check that a value is larger than N

smallerThan :: (Monad m, Ord a) => a -> e -> ValidationRuleT e m a #

Check that a value is smaller than N

valueBetween :: (Monad m, Ord a) => a -> a -> e -> ValidationRuleT e m a #

Check that a value is between M and N

matchesRegex :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS, Monad m) => Regex -> e -> ValidationRuleT e m a #

Checks that a value matches a regular expression

conformsPred :: Monad m => (a -> Bool) -> e -> ValidationRuleT e m a #

Check that a value conforms a predicate

conformsPredM :: Monad m => (a -> m Bool) -> e -> ValidationRuleT e m a #

Check that a value conforms a predicate

Transforming checks

requiredValue :: Monad m => e -> TransValidationRuleT e m (Maybe a) a #

Check that an optional value is actually set to 'Just a'

nonEmptyList :: Monad m => e -> TransValidationRuleT e m [a] (NonEmpty a) #

Check that a list is not empty

conformsPredTrans :: Monad m => (a -> Maybe b) -> e -> TransValidationRuleT e m a b #

Do some check returning Nothing if the value is invalid and 'Just a' otherwise.

conformsPredTransM :: Monad m => (a -> m (Maybe b)) -> e -> TransValidationRuleT e m a b #

Do some check returning Nothing if the value is invalid and 'Just a' otherwise.

Helper classes and types

class HasLength a where #

All types that have a length, eg. String, '[a]', 'Vector a', etc.

Minimal complete definition

getLength

Methods

getLength :: a -> Int64 #

class ConvertibleStrings a b where #

Minimal complete definition

convertString

Methods

convertString :: a -> b #

Instances

ConvertibleStrings String String 
ConvertibleStrings String StrictByteString 
ConvertibleStrings String LazyByteString 
ConvertibleStrings String StrictText 
ConvertibleStrings String LazyText 
ConvertibleStrings StrictByteString String 
ConvertibleStrings StrictByteString StrictByteString 
ConvertibleStrings StrictByteString LazyByteString 
ConvertibleStrings StrictByteString StrictText 
ConvertibleStrings StrictByteString LazyText 
ConvertibleStrings LazyByteString String 
ConvertibleStrings LazyByteString StrictByteString 
ConvertibleStrings LazyByteString LazyByteString 
ConvertibleStrings LazyByteString StrictText 
ConvertibleStrings LazyByteString LazyText 
ConvertibleStrings StrictText String 
ConvertibleStrings StrictText StrictByteString 
ConvertibleStrings StrictText LazyByteString 
ConvertibleStrings StrictText StrictText 
ConvertibleStrings StrictText LazyText 
ConvertibleStrings LazyText String 
ConvertibleStrings LazyText StrictByteString 
ConvertibleStrings LazyText LazyByteString 
ConvertibleStrings LazyText StrictText 
ConvertibleStrings LazyText LazyText 

data Int64 :: * #

64-bit signed integer type

Instances

Bounded Int64 
Enum Int64 
Eq Int64 

Methods

(==) :: Int64 -> Int64 -> Bool #

(/=) :: Int64 -> Int64 -> Bool #

Integral Int64 
Num Int64 
Ord Int64 

Methods

compare :: Int64 -> Int64 -> Ordering #

(<) :: Int64 -> Int64 -> Bool #

(<=) :: Int64 -> Int64 -> Bool #

(>) :: Int64 -> Int64 -> Bool #

(>=) :: Int64 -> Int64 -> Bool #

max :: Int64 -> Int64 -> Int64 #

min :: Int64 -> Int64 -> Int64 #

Read Int64 
Real Int64 

Methods

toRational :: Int64 -> Rational #

Show Int64 

Methods

showsPrec :: Int -> Int64 -> ShowS #

show :: Int64 -> String #

showList :: [Int64] -> ShowS #

Ix Int64 
Lift Int64 

Methods

lift :: Int64 -> Q Exp #

Bits Int64 
FiniteBits Int64 

Regular expression helpers

re :: QuasiQuoter #

A QuasiQuoter for regular expressions that does a compile time check.

mkRegexQQ :: [PCREOption] -> QuasiQuoter #

Returns a QuasiQuoter like re, but with given PCRE options.

data Regex :: * #

An abstract pointer to a compiled PCRE Regex structure The structure allocated by the PCRE library will be deallocated automatically by the Haskell storage manager.

Instances

Eq Regex 

Methods

(==) :: Regex -> Regex -> Bool #

(/=) :: Regex -> Regex -> Bool #

Ord Regex 

Methods

compare :: Regex -> Regex -> Ordering #

(<) :: Regex -> Regex -> Bool #

(<=) :: Regex -> Regex -> Bool #

(>) :: Regex -> Regex -> Bool #

(>=) :: Regex -> Regex -> Bool #

max :: Regex -> Regex -> Regex #

min :: Regex -> Regex -> Regex #

Show Regex 

Methods

showsPrec :: Int -> Regex -> ShowS #

show :: Regex -> String #

showList :: [Regex] -> ShowS #