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 +76/−0
- src/Data/Validator.hs +4/−3
- validate-input.cabal +8/−5
+ README.md view
@@ -0,0 +1,76 @@+validate-input+=====++[](https://travis-ci.org/agrafix/validate-input)+[](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