packages feed

miku 2011.6.12 → 2011.6.15

raw patch · 5 files changed

+19/−17 lines, 5 filesdep ~hack2-contrib

Dependency ranges changed: hack2-contrib

Files

miku.cabal view
@@ -1,5 +1,5 @@ Name:                 miku-Version:              2011.6.12+Version:              2011.6.15 Build-type:           Simple Synopsis:             A minimum web dev DSL in Haskell Description:@@ -20,7 +20,7 @@   build-depends:      base > 4 && <= 5                     , data-default                     , hack2 >= 2011.6.10-                    , hack2-contrib >= 2011.6.10+                    , hack2-contrib >= 2011.6.11                     , utf8-string                     , air >= 2011.6.11                     , mtl
readme.md view
@@ -32,7 +32,9 @@ ## Routes  ### Verbs-+    +    {-# LANGUAGE OverloadedStrings #-}+         -- use - instead of $ for clarity     import Air.Light ((-))     import Prelude hiding ((-))@@ -105,7 +107,6 @@ * When inspecting the request, use `ask` defined in `ReaderT` monad to get the `Hack2.Environment`, then use helper method defined in `Hack2.Contrib.Request` to query it. * `Response` is in `StateT`, `html` and `text` are simply helper methods that update the state, i.e. setting the response body, content-type, etc. * You do need to understand monad transformers to reach the full power of `miku`.-* For mac users, use `GHC 6.12.1` if you have trouble running the server.      ## Reference 
src/Network/Miku/DSL.hs view
@@ -35,7 +35,7 @@  add_route :: RequestMethod -> ByteString -> AppMonad -> MikuMonad add_route route_method route_string app_monad = do-  middleware - miku_router route_method route_string app_monad+  modM __router - insert_last - miku_router route_method route_string app_monad        before :: (Env -> IO Env) -> MikuMonad before = ioconfig > middleware
src/Network/Miku/Engine.hs view
@@ -26,21 +26,20 @@   miku :: MikuMonad -> Application-miku miku_monad = miku_middleware miku_monad not_found_app-  where-    not_found_app = not_found dummy_app+miku miku_monad = miku_middleware miku_monad (not_found dummy_app)       miku_middleware :: MikuMonad -> Middleware miku_middleware miku_monad =    -  let miku_state                  = execState miku_monad def-      mime_filter                 = user_mime (miku_state.mimes)-      miku_middlewares            = miku_state.middlewares.use-      pre_installed_middleware    = pre_installed_middlewares.use+  let miku_state                      = execState miku_monad def+      mime_filter                     = user_mime (miku_state.mimes)+      miku_middleware_stack           = use - miku_state.middlewares+      miku_router_middleware          = use - miku_state.router+      pre_installed_middleware_stack  = use - pre_installed_middlewares   in   -  use [pre_installed_middleware, mime_filter, miku_middlewares]+  use [pre_installed_middleware_stack, mime_filter, miku_middleware_stack, miku_router_middleware]     miku_router :: RequestMethod -> ByteString -> AppMonad -> Middleware@@ -50,7 +49,7 @@       case env.path_info.parse_params route_string of         Nothing -> app env         Just (_, params) -> -          let miku_app = run_app - local (put_namespace miku_captures params) app_monad +          let miku_app = run_app_monad - local (put_namespace miku_captures params) app_monad            in           miku_app env     @@ -60,8 +59,8 @@      where     -    run_app :: AppMonad -> Application-    run_app app_monad = \env -> runReaderT app_monad env .flip execStateT def {status = 200}+    run_app_monad :: AppMonad -> Application+    run_app_monad app_monad = \env -> runReaderT app_monad env .flip execStateT def {status = 200}       parse_params :: ByteString -> ByteString -> Maybe (ByteString, [(ByteString, ByteString)])
src/Network/Miku/Type.hs view
@@ -20,6 +20,7 @@ data MikuState = MikuState   {     middlewares     :: [Middleware]+  , router          :: [Middleware]   , mimes           :: [(ByteString, ByteString)]   } @@ -27,7 +28,8 @@ instance Default MikuState where   def = MikuState      {-      middlewares = [dummy_middleware]+      middlewares = def+    , router = def     , mimes = def     }