packages feed

wai-predicates 0.1 → 0.2

raw patch · 6 files changed

+36/−12 lines, 6 filesdep +transformers

Dependencies added: transformers

Files

src/Data/Predicate.hs view
@@ -6,6 +6,7 @@  module Data.Predicate     ( Predicate+    , module Data.Predicate.Result     , constant     , failure     , true@@ -23,7 +24,6 @@     , mapFail     , exec     , module Data.Predicate.Product-    , module Data.Predicate.Result     ) where  import Control.Monad
src/Data/Predicate/Result.hs view
@@ -8,6 +8,8 @@  import Control.Applicative import Control.Monad+import Control.Monad.Trans.Class+import Control.Monad.IO.Class  -- | A 'Bool'-like type where each branch--@Fail@ and @Okay@--carries -- some metadata.@@ -33,6 +35,12 @@ result f _ (Fail   x) = f x result _ g (Okay d x) = g d x +fromEither :: Either f t -> Result f t+fromEither = either Fail return++toEither :: Result f t -> Either f t+toEither = result Left (\_ x -> Right x)+ newtype ResultT f m t = ResultT { runResultT :: m (Result f t) }  instance Monad m => Functor (ResultT f m) where@@ -43,20 +51,35 @@     (<*>) = ap  instance Monad m => Monad (ResultT f m) where-    return  = ResultT . return . Okay 0+    return  = ResultT . return . return     m >>= k = ResultT $ runResultT m >>= \a -> case a of         Okay _ x -> runResultT (k x)         Fail   x -> return (Fail x)     fail = ResultT . fail +instance MonadTrans (ResultT f) where+    lift = ResultT . liftM return++instance MonadIO m => MonadIO (ResultT f m) where+    liftIO = lift . liftIO+ resultT :: Monad m => (f -> m a) -> (Double -> t -> m a) -> ResultT f m t -> m a resultT f g (ResultT m) = m >>= \a -> case a of     Fail   x -> f x     Okay d x -> g d x +resultT' :: Monad m => (f -> m a) -> (t -> m a) -> ResultT f m t -> m a+resultT' f g = resultT f (\_ x -> g x)+ mapResultT :: (m (Result f t) -> n (Result f' t')) -> ResultT f m t -> ResultT f' n t' mapResultT f m = ResultT $ f (runResultT m)  hoistResult :: Monad m => Result f t -> ResultT f m t hoistResult = ResultT . return++okay :: Monad m => Double -> t -> ResultT f m t+okay d = hoistResult . Okay d++throwF :: Monad m => f -> ResultT f m t+throwF = hoistResult . Fail 
src/Network/Wai/Predicate.hs view
@@ -6,7 +6,7 @@  module Network.Wai.Predicate     ( module Data.Predicate-    , getRequest+    , request      , query     , hasQuery@@ -43,8 +43,8 @@ import Network.Wai.Predicate.Utility import Network.Wai -getRequest :: (HasRequest r) => Predicate r f Request-getRequest = return . request+request :: (HasRequest r) => Predicate r f Request+request = return . getRequest  query :: (HasQuery r, FromByteString a) => ByteString -> Predicate r Error a query k r = case lookupQuery k r of
src/Network/Wai/Predicate/Error.hs view
@@ -7,7 +7,7 @@ import Data.ByteString (ByteString) import Network.HTTP.Types.Status --- | The error type used as meta-data for @F@ in all WAI predicates.+-- | The error type used as meta-data for @Fail@ in all WAI predicates. data Error = Error     { status  :: !Status          -- ^ HTTP status code     , message :: Maybe ByteString -- ^ optional status message
src/Network/Wai/Predicate/Request.hs view
@@ -34,7 +34,7 @@ import qualified Data.Vector     as Vec  class HasRequest a where-    request :: a -> Wai.Request+    getRequest :: a -> Wai.Request  class HasMethod a where     method :: a -> Method@@ -58,22 +58,22 @@     }  instance HasRequest Req where-    request = _request+    getRequest = _request  instance HasMethod Req where-    method = Wai.requestMethod . request+    method = Wai.requestMethod . getRequest  instance HasMethod Wai.Request where     method = Wai.requestMethod  instance HasHeaders Req where-    headers = Wai.requestHeaders . request+    headers = Wai.requestHeaders . getRequest  instance HasHeaders Wai.Request where     headers = Wai.requestHeaders  instance HasQuery Req where-    queryItems = Wai.queryString . request+    queryItems = Wai.queryString . getRequest  instance HasQuery Wai.Request where     queryItems = Wai.queryString
wai-predicates.cabal view
@@ -1,5 +1,5 @@ name:                wai-predicates-version:             0.1+version:             0.2 synopsis:            WAI request predicates license:             OtherLicense license-file:        LICENSE@@ -53,6 +53,7 @@       , cookie           == 0.4.*       , case-insensitive == 1.1.*       , http-types       == 0.8.*+      , transformers     == 0.3.*       , vector           == 0.10.*       , wai              == 2.0.*