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 +2/−2
- readme.md +3/−2
- src/Network/Miku/DSL.hs +1/−1
- src/Network/Miku/Engine.hs +10/−11
- src/Network/Miku/Type.hs +3/−1
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 }