This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "snap-core".

The branch, faster-snap-monad has been updated
       via  a39fc1eb30c3db63ed47551818e70d13722dd053 (commit)
       via  feb031cf26a63e33e5d5514288c25460c83bf11f (commit)
       via  6b80792497464d8606789fd16d76c9a9213d44cf (commit)
       via  cb1a3940863872a5231bc77593168ba2b66fc319 (commit)
       via  a66d2f473a73b323eb869d47f7a35ef35bb64c30 (commit)
       via  098b424b4305cebc9671ef6495a2f6f3dc8fff6c (commit)
       via  46ec8ee04c81d11eada727398d65de2ee6af3f25 (commit)
       via  c9e0d10ed2272cededb8f5936b9a130cb6710f3b (commit)
       via  2e98e583878146f5e81bf887ada8cc34d787a44e (commit)
       via  d6ac45b33e5f167a3fdabd6961cc085704a37621 (commit)
       via  91d07caf7e9889a05d1a04c59683234b546f887f (commit)
       via  367ae078f0af5409469f2e61f1373e697169ed8e (commit)
       via  e242ffc13e25de10417402d2d56a0e3f26ba3c31 (commit)
       via  5aeb76386ab2ee90f13c278ed81c4f76b4206c6f (commit)
       via  54587694d7c7a042144700a5b7590d0e75831f7d (commit)
       via  d6b77605032fbdff428632125c7216da99528063 (commit)
       via  b7bedd66c5945b9a03a9f1a1e60c786e987ec063 (commit)
       via  a47384a4550509daebc3046dc1210902ddad0745 (commit)
       via  9f1bf3dc566a2144478e8eb82a71bf4b391f1af4 (commit)
       via  4aeba1cdb7ff2cb48433398baffe223ff1ba20de (commit)
       via  96f0c7191fc7ab0c35fd53c478fc0219c3fe0109 (commit)
       via  3fee627e0d65171c97e8f1994d536051da3c997e (commit)
       via  cc86118ec0093fe810899eeec2c4e01a97aa4299 (commit)
       via  e1ea73099e26dd1d7f08dc5644e8c186f0ca96f6 (commit)
       via  d2075bb1fe8cf061ada86cd42239e4dd4bb21fa9 (commit)
       via  3cba6da2735a87673856ed0b6f3ec732979b9b60 (commit)
       via  02b55ac1416a5e1bf20d93122c9201b40611f016 (commit)
       via  0847b5fd442bdc298d255cba08b884e6112b602d (commit)
       via  d32e8d28e77b8077d2d2ea06efc46c9a9698c5ba (commit)
       via  08fcf875751e70dad114ff09fa8ebc082abf93ab (commit)
       via  1bb3ed52fe2b2d35794a6f796922d3dcaddfa346 (commit)
       via  7a558c9fe0362451ffd61910632190813d3f74c6 (commit)
       via  21ecab3f49ea6daed5b171369fa0188c114d2808 (commit)
       via  97c281338a2075f1c4867c908ead122c7650ff84 (commit)
       via  bd519849f294ad1be9e3b1dd75c1b185e1c5c35c (commit)
       via  371831cd66e68e0174cffcefb8b723cdd384879b (commit)
       via  588046129b4b5ce7f4a9f64ed9ada0457f39b74c (commit)
       via  51433a4aa5546c2f36342c35d0425fa619e4658b (commit)
       via  bd5fbdcfe39e32e80889df201bbf1701406d511b (commit)
       via  49338b70afe3db65ce650c21be747c629e56eb45 (commit)
       via  21e5ad9896ac107a510f267717279ae3e2e7b8ea (commit)
       via  9845541171505672a87ed036751204162dcd4dfc (commit)
       via  add79b65cf33d98b03192f69fedc43c26359684d (commit)
       via  7fde1b831d8252c19e925ddd11b479ed29e73134 (commit)
       via  6664c75e3fc09c1546977862bc2eebeda98c6c6e (commit)
       via  bc2b98d6a23bff418d3ff5f206b4bcb3814c9fa8 (commit)
       via  36885c4a501fb33cb993026b007ed2d583645e51 (commit)
       via  a1c53efd40747890c5cae296779d0618e438c54e (commit)
       via  ae5ea7a86a87e261d6cbe0bba094f61c6956f67c (commit)
       via  d0eef4403035c0acc9d645618bb3a82e8007dca5 (commit)
       via  0fb6c66afbb3e35f25f7a5fc91aeb80da1169436 (commit)
       via  35cad8bec54e62943b5d7f4361d28711dd0e1026 (commit)
       via  ba8770a7d21ee6279d5e0bb94de3e028a47fa263 (commit)
       via  76ee6887827eb34e7654d2a08742e2fa7b94ea57 (commit)
       via  0ce8bb393cd23cdb8bdefc64191c79c3f204f7fe (commit)
       via  1b4ea719a186a0130f633e38b6d87e6310f71d3e (commit)
       via  6cb92b72ad06bc1132347b5a9983372426f30414 (commit)
       via  86794947a86fa4f01326f8511b0fdd3be7bd9151 (commit)
      from  2eace5999d442c63a6a1c23b818e675c443a0ec5 (commit)


Summary of changes:
 README.SNAP.md                            |    6 +-
 README.md                                 |    4 +-
 RELEASE-CHECKLIST                         |   14 ++-
 Setup.hs                                  |    3 +
 TODO                                      |  117 +++++-------------
 cbits/timefuncs.c                         |    1 +
 extra/haddock.css                         |    2 +-
 snap-core.cabal                           |   76 +++++++++++-
 src/Data/CIByteString.hs                  |    4 +
 src/Snap/Internal/Debug.hs                |   53 +++++++--
 src/Snap/Internal/Http/Types.hs           |   81 +++++++++----
 src/Snap/Internal/Iteratee/Debug.hs       |    3 +
 src/Snap/Internal/Routing.hs              |   68 +++++++----
 src/Snap/Internal/Types.hs                |  195 ++++++++++++++++++++++++-----
 src/Snap/Iteratee.hs                      |   83 ++++++++++++-
 src/Snap/Starter.hs                       |  104 +++++++++++-----
 src/Snap/Types.hs                         |   73 ++++++-----
 src/Snap/Util/FileServe.hs                |   19 +---
 src/Snap/Util/GZip.hs                     |   14 ++-
 test/runTestsAndCoverage.sh               |    2 +-
 test/snap-core-testsuite.cabal            |   81 +++++++-----
 test/suite/Snap/Internal/Routing/Tests.hs |  173 ++++++++++++++++++++++++--
 test/suite/Snap/Iteratee/Tests.hs         |   56 ++++++++
 test/suite/Snap/Test/Common.hs            |    7 +
 test/suite/Snap/Types/Tests.hs            |   49 ++++++-
 test/suite/Snap/Util/FileServe/Tests.hs   |    4 +-
 test/suite/Snap/Util/GZip/Tests.hs        |    8 +-
 27 files changed, 971 insertions(+), 329 deletions(-)
 create mode 100644 Setup.hs

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit a39fc1eb30c3db63ed47551818e70d13722dd053
Merge: 2eace59 feb031c
Author: Leon P Smith <[email protected]>
Date:   Mon May 24 23:43:12 2010 -0400

    Merge branch 'master' into faster-snap-monad
    
    Conflicts:
        src/Snap/Internal/Types.hs

diff --cc src/Snap/Internal/Types.hs
index 9729b3f,31a173e..3cad541
--- a/src/Snap/Internal/Types.hs
+++ b/src/Snap/Internal/Types.hs
@@@ -6,12 -6,12 +6,14 @@@
  module Snap.Internal.Types where
  
  ------------------------------------------------------------------------------
++import           Prelude hiding (catch)
  import           Control.Applicative
- import           Control.Exception
+ import           Control.Exception (throwIO, ErrorCall(..))
+ import           Control.Monad.CatchIO
 -import           Control.Monad.State.Strict
 +import           Control.Monad
 +import           Control.Monad.Trans
  import           Data.ByteString.Char8 (ByteString)
- import qualified Data.ByteString.Char8 as B
+ import qualified Data.ByteString.Char8 as S
  import qualified Data.ByteString.Lazy.Char8 as L
  import           Data.IORef
  import qualified Data.Iteratee as Iter
@@@ -81,33 -80,62 +82,51 @@@ import           Snap.Internal.Http.Typ
     > a = liftIO fireTheMissiles
  -}
  
++------------------------------------------------------------------------------
 +type Cont r a = r -> (Response -> r) -> (a -> r) -> r
  
+ ------------------------------------------------------------------------------
  newtype Snap a = Snap {
 -      unSnap :: StateT SnapState (Iteratee IO) (Maybe (Either Response a))
 +      unSnap :: forall r. Cont (SnapState -> Iteratee IO r) a
  }
  
  
+ ------------------------------------------------------------------------------
  data SnapState = SnapState
      { _snapRequest  :: Request
-     , _snapResponse :: Response }
+     , _snapResponse :: Response
+     , _snapLogError :: ByteString -> IO () }
  
  
+ ------------------------------------------------------------------------------
  instance Monad Snap where
 -    (Snap m) >>= f =
 -        Snap $ do
 -            eth <- m
 -            maybe (return Nothing)
 -                  (either (return . Just . Left)
 -                          (unSnap . f))
 -                  eth
 +    m >>= f  = Snap (\nk rk ak -> unSnap m nk rk (\a -> unSnap (f a) nk rk 
ak))
 +    return v = Snap (\_nk _rk ak -> ak v)
 +    fail   _ = Snap (\nk _rk _ak -> nk)
  
 -    return = Snap . return . Just . Right
 -    fail   = const $ Snap $ return Nothing
  
+ 
+ ------------------------------------------------------------------------------
  instance MonadIO Snap where
 -    liftIO m = Snap $ liftM (Just . Right) $ liftIO m
 +    liftIO m = Snap (\_nk _rk ak st -> liftIO m >>= (\a -> ak a st))
  
  
+ ------------------------------------------------------------------------------
+ instance MonadCatchIO Snap where
 -    catch (Snap m) handler = Snap $ do
 -        x <- try m
 -        case x of
 -          (Left e)  -> let (Snap z) = handler e in z
 -          (Right y) -> return y
++    catch m handler = Snap $ \nk rk ak st -> 
++        unSnap m nk rk ak st `catch` \e -> unSnap (handler e) nk rk ak st
+ 
 -    block (Snap m) = Snap $ block m
 -    unblock (Snap m) = Snap $ unblock m
++    block   m = Snap $ \nk rk ak st -> block   (unSnap m nk rk ak st)
++    unblock m = Snap $ \nk rk ak st -> unblock (unSnap m nk rk ak st)
+ 
+ 
+ ------------------------------------------------------------------------------
  instance MonadPlus Snap where
 -    mzero = Snap $ return Nothing
 -
 -    a `mplus` b =
 -        Snap $ do
 -            mb <- unSnap a
 -            if isJust mb then return mb else unSnap b
 +    mzero = Snap (\nk _rk _ak -> nk)
 +    a `mplus` b = Snap (\nk rk ak -> unSnap a (unSnap b nk rk ak) rk ak)
  
  
+ ------------------------------------------------------------------------------
  instance Functor Snap where
      fmap = liftM
  
@@@ -124,8 -154,10 +145,10 @@@ instance Alternative Snap wher
  
  ------------------------------------------------------------------------------
  liftIter :: Iteratee IO a -> Snap a
 -liftIter i = Snap (lift i >>= return . Just . Right)
 +liftIter i = Snap (\_nk _rk ak st -> i >>= (\a -> ak a st))
  
+ 
+ ------------------------------------------------------------------------------
  -- | Sends the request body through an iteratee (data consumer) and
  -- returns the result.
  runRequestBody :: Iteratee IO a -> Snap a
@@@ -178,9 -214,11 +205,11 @@@ unsafeDetachRequestBody = d
  -- | Short-circuits a 'Snap' monad action early, storing the given
  -- 'Response' value in its state.
  finishWith :: Response -> Snap ()
 -finishWith = Snap . return . Just . Left
 +finishWith v = Snap (\_nk rk _ak -> rk v)
  {-# INLINE finishWith #-}
  
+ 
+ ------------------------------------------------------------------------------
  -- | Fails out of a 'Snap' monad action.  This is used to indicate
  -- that you choose not to handle the given request within the given
  -- handler.
@@@ -255,16 -301,21 +292,21 @@@ ifTop = path "
  {-# INLINE ifTop #-}
  
  
+ ------------------------------------------------------------------------------
  -- | Local Snap version of 'get'.
  sget :: Snap SnapState
- sget = Snap (\_nk _rk ak st -> ak st st)
 -sget = Snap $ liftM (Just . Right) get
++sget = Snap $ \_nk _rk ak st -> ak st st
  {-# INLINE sget #-}
  
+ 
+ ------------------------------------------------------------------------------
  -- | Local Snap monad version of 'modify'.
  smodify :: (SnapState -> SnapState) -> Snap ()
- smodify f = Snap (\_nk _rk ak st -> ak () (f st))
 -smodify f = Snap $ modify f >> return (Just $ Right ())
++smodify f = Snap $ \_nk _rk ak st -> ak () (f st)
  {-# INLINE smodify #-}
  
+ 
+ ------------------------------------------------------------------------------
  -- | Grabs the 'Request' object out of the 'Snap' monad.
  getRequest :: Snap Request
  getRequest = liftM _snapRequest sget
@@@ -290,12 -349,23 +340,22 @@@ modifyRequest :: (Request -> Request) -
  modifyRequest f = smodify $ \ss -> ss { _snapRequest = f $ _snapRequest ss }
  {-# INLINE modifyRequest #-}
  
+ 
+ ------------------------------------------------------------------------------
  -- | Modifes the 'Response' object stored in a 'Snap' monad.
 -modifyResponse :: (Response -> Response) -> Snap () 
 +modifyResponse :: (Response -> Response) -> Snap ()
  modifyResponse f = smodify $ \ss -> ss { _snapResponse = f $ _snapResponse ss 
}
  {-# INLINE modifyResponse #-}
  
  
+ ------------------------------------------------------------------------------
+ -- | Log an error message in the 'Snap' monad
+ logError :: ByteString -> Snap ()
 -logError s = Snap $ gets _snapLogError >>= (\l -> liftIO $ l s)
 -                                       >>  return (Just $ Right ())
++logError s = Snap $ \_nk _rk ak st -> liftIO (_snapLogError st s) >> ak () st
+ {-# INLINE logError #-}
+ 
+ 
+ ------------------------------------------------------------------------------
  -- | Adds the output from the given enumerator to the 'Response'
  -- stored in the 'Snap' monad state.
  addToOutput :: (forall a . Enumerator a)   -- ^ output to add
@@@ -351,14 -463,27 +453,18 @@@ instance Show NoHandlerException wher
  instance Exception NoHandlerException
  
  
+ ------------------------------------------------------------------------------
  -- | Runs a 'Snap' monad action in the 'Iteratee IO' monad.
- runSnap :: Snap a -> Request -> Iteratee IO (Request,Response)
- runSnap m req = unSnap m nk rk ak ss
+ runSnap :: Snap a
+         -> (ByteString -> IO ())
+         -> Request
+         -> Iteratee IO (Request,Response)
 -runSnap (Snap m) logerr req = do
 -    (r, ss') <- runStateT m ss
 -
 -    e <- maybe (return $ Left fourohfour)
 -               return
 -               r
 -
 -    -- is this a case of early termination?
 -    let resp = case e of 
 -                 Left x  -> x
 -                 Right _ -> _snapResponse ss'
 -
 -    return (_snapRequest ss', resp)
 -
++runSnap m logerr req = unSnap m nk rk ak ss
    where
 +    nk   ss' = return (_snapRequest ss', fourohfour       )
 +    rk x ss' = return (_snapRequest ss', x                )
 +    ak r ss' = return (_snapRequest ss', _snapResponse ss')
 +
      fourohfour = setContentLength 3 $
                   setResponseStatus 404 "Not Found" $
                   modifyResponseBody (>. enumBS "404") $
@@@ -370,13 -495,40 +476,34 @@@
  {-# INLINE runSnap #-}
  
  
- evalSnap :: Snap a -> Request -> Iteratee IO a
- evalSnap m req = unSnap m nk rk ak ss
+ ------------------------------------------------------------------------------
+ evalSnap :: Snap a
+          -> (ByteString -> IO ())
+          -> Request
+          -> Iteratee IO a
 -evalSnap (Snap m) logerr req = do
 -    (r, _) <- runStateT m ss
 -
 -    e <- maybe (liftIO $ throwIO NoHandlerException)
 -               return
 -               r
 -
 -    -- is this a case of early termination?
 -    case e of 
 -      Left _  -> liftIO $ throwIO $ ErrorCall "no value"
 -      Right x -> return x
++evalSnap m logerr req = unSnap m nk rk ak ss
    where
 +    nk   _ = liftIO $ throwIO NoHandlerException
 +    rk _ _ = liftIO $ throwIO $ ErrorCall "no value"
 +    ak a _ = return a
 +
      dresp = emptyResponse { rspHttpVersion = rqVersion req }
-     ss = SnapState req dresp
+     ss = SnapState req dresp logerr
  {-# INLINE evalSnap #-}
+ 
+ 
+ 
+ ------------------------------------------------------------------------------
+ -- | See 'rqParam'. Looks up a value for the given named parameter in the
+ -- 'Request'. If more than one value was entered for the given parameter name,
+ -- 'getParam' gloms the values together with:
+ --
+ -- @    'S.intercalate' \" \"@
+ --
+ getParam :: ByteString          -- ^ parameter name to look up
+          -> Snap (Maybe ByteString)
+ getParam k = do
+     rq <- getRequest
+     return $ liftM (S.intercalate " ") $ rqParam k rq
+ 
+ 
-----------------------------------------------------------------------


hooks/post-receive
-- 
snap-core
_______________________________________________
Snap mailing list
[email protected]
http://mailman-mail5.webfaction.com/listinfo/snap

Reply via email to