packages feed

validate-input 0.2.0.0 → 0.3.0.0

raw patch · 3 files changed

+88/−8 lines, 3 filesdep +string-conversionsdep −stringabledep ~pcre-heavyPVP ok

version bump matches the API change (PVP)

Dependencies added: string-conversions

Dependencies removed: stringable

Dependency ranges changed: pcre-heavy

API changes (from Hackage documentation)

- Data.Validator: class Stringable a
- Data.Validator: fromByteString :: Stringable a => ByteString -> a
- Data.Validator: fromFilePath :: Stringable a => FilePath -> a
- Data.Validator: fromLazyByteString :: Stringable a => ByteString -> a
- Data.Validator: fromLazyText :: Stringable a => Text -> a
- Data.Validator: fromString :: Stringable a => String -> a
- Data.Validator: fromText :: Stringable a => Text -> a
- Data.Validator: toByteString :: Stringable a => a -> ByteString
- Data.Validator: toFilePath :: Stringable a => a -> FilePath
- Data.Validator: toLazyByteString :: Stringable a => a -> ByteString
- Data.Validator: toLazyText :: Stringable a => a -> Text
- Data.Validator: toString :: Stringable a => a -> String
- Data.Validator: toText :: Stringable a => a -> Text
+ Data.Validator: class ConvertibleStrings a b
+ Data.Validator: convertString :: ConvertibleStrings a b => a -> b
- Data.Validator: matchesRegex :: (Stringable a, Monad m) => Regex -> e -> ValidationRuleT e m a
+ Data.Validator: matchesRegex :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS, Monad m) => Regex -> e -> ValidationRuleT e m a

Files

+ README.md view
@@ -0,0 +1,76 @@+validate-input+=====++[![Build Status](https://travis-ci.org/agrafix/validate-input.svg)](https://travis-ci.org/agrafix/validate-input)+[![Hackage](https://img.shields.io/hackage/v/validate-input.svg)](http://hackage.haskell.org/package/validate-input)++## Intro++Hackage: [validate-input](http://hackage.haskell.org/package/validate-input)+Stackage: [validate-input](https://www.stackage.org/package/validate-input)++Input validation combinator library+++## Library Usage Example++```haskell+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+import Data.Validator+import qualified Data.Text as T++data Example+   = Example+   { ex_username :: T.Text+   , ex_dogs :: Int+   } deriving (Show)++main :: IO ()+main =+    do putStrLn "Check results:"+       print example++checkUsername :: Monad m => ValidationRuleT String m T.Text+checkUsername =+    lengthBetween 3 12 "Should between 3 and 12 chars"+    >=> matchesRegex [re|^[A-za-z0-9]+$|] "only alpha num"++checkNumber :: Monad m => ValidationRuleT String m Int+checkNumber =+    smallerThan 5 "No more than 5 dogs allowed"++checkExample :: Monad m => ValidationRuleT String m Example+checkExample e =+    Example <$> checkUsername (ex_username e)+            <*> checkNumber (ex_dogs e)++example :: Either String Example+example =+    runValidator checkExample $+    Example+    { ex_username = "alex"+    , ex_dogs = 23+    }++```++## Install++* Using cabal: `cabal install validate-input`+* Using Stack: `stack install validate-input`+* From Source (cabal): `git clone https://github.com/agrafix/validate-input.git && cd validate-input && cabal install`+* From Source (stack): `git clone https://github.com/agrafix/validate-input.git && cd validate-input && stack build`+++## Misc++### Supported GHC Versions++* 7.8.4+* 7.10.2++### License++Released under the MIT license.+(c) 2015 Alexander Thiemann
src/Data/Validator.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} module Data.Validator@@ -13,7 +14,7 @@     , matchesRegex     , conformsPred, conformsPredM       -- * Helper classes and types-    , HasLength(..), Stringable(..)+    , HasLength(..), ConvertibleStrings(..)     , Int64       -- * Regular expression helpers     , re, mkRegexQQ, Regex@@ -26,7 +27,7 @@ import Control.Monad.Trans import Control.Monad.Trans.Either import Data.Int-import Data.Stringable hiding (length)+import Data.String.Conversions import Text.Regex.PCRE.Heavy import qualified Data.Text as T import qualified Data.Text.Lazy as TL@@ -136,6 +137,6 @@ {-# INLINE conformsPredM #-}  -- | Checks that a value matches a regular expression-matchesRegex :: (Stringable a, Monad m) => Regex -> e -> ValidationRuleT e m a+matchesRegex :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS, Monad m) => Regex -> e -> ValidationRuleT e m a matchesRegex r = conformsPred (=~ r) {-# INLINE matchesRegex #-}
validate-input.cabal view
@@ -1,5 +1,5 @@ name:                validate-input-version:             0.2.0.0+version:             0.3.0.0 synopsis:            Input validation combinator library description:         A small Haskell combinator library that provides a simple way of                      validating user provided data structures.@@ -14,11 +14,14 @@ build-type:          Simple cabal-version:       >=1.10 tested-with:-    GHC == 7.8.3+    GHC == 7.8.4, GHC == 7.10.2 +extra-source-files:+    README.md+ source-repository head   type: git-  location: git://github.com/agrafix/validate-input.git+  location: https://github.com/agrafix/validate-input  library   exposed-modules:     Data.Validator@@ -27,8 +30,8 @@                        bytestring >=0.10,                        either >=4.3,                        mtl >=2.1,-                       pcre-heavy >=0.2,-                       stringable >=0.1,+                       pcre-heavy >=1.0,+                       string-conversions >=0.4,                        text >=1.2   hs-source-dirs:      src   default-language:    Haskell2010