validate-input-0.1.0.0: Input validation combinator library

Safe HaskellNone
LanguageHaskell2010

Data.Validator

Contents

Synopsis

core monad and runners

type ValidationM e = ValidationT e Identity Source

The validation monad

newtype ValidationT e m a Source

The validation monad transformer

Constructors

ValidationT 

Fields

unValidationT :: EitherT e m a
 

runValidator :: (a -> ValidationM e a) -> a -> Either e a Source

Run a validation on a type a

runValidatorT :: Monad m => (a -> ValidationT e m a) -> a -> m (Either e a) Source

Run a validation on a type a

combinators

(+>>) :: Monad m => (a -> ValidationT e m a) -> (a -> ValidationT e m a) -> a -> ValidationT e m a Source

Combine two checks

checks

minLength :: (Monad m, HasLength a) => Int64 -> e -> a -> ValidationT e m a Source

Check that the value is at least N elements long

maxLength :: (Monad m, HasLength a) => Int64 -> e -> a -> ValidationT e m a Source

Check that the value is at maxium N elements long

lengthBetween :: (Monad m, HasLength a) => Int64 -> Int64 -> e -> a -> ValidationT e m a Source

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

notEmpty :: (Monad m, HasLength a) => e -> a -> ValidationT e m a Source

Specialized minLength with N = 1

largerThan :: (Monad m, Ord a) => a -> e -> a -> ValidationT e m a Source

Check that a value is larger than N

smallerThan :: (Monad m, Ord a) => a -> e -> a -> ValidationT e m a Source

Check that a value is smaller than N

valueBetween :: (Monad m, Ord a) => a -> a -> e -> a -> ValidationT e m a Source

Check that a value is between M and N

matchesRegex :: (Stringable a, Monad m) => Regex -> e -> a -> ValidationT e m a Source

Checks that a value matches a regular expression

conformsPred :: Monad m => (a -> Bool) -> e -> a -> ValidationT e m a Source

Check that a value conforms a predicate

conformsPredM :: Monad m => (a -> m Bool) -> e -> a -> ValidationT e m a Source

Check that a value conforms a predicate

helper classes and types

class HasLength a where Source

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

Methods

getLength :: a -> Int64 Source

reexports

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