happstack-hamlet 0.2.1 → 6.0.0
raw patch · 2 files changed
+9/−37 lines, 2 filesdep ~hamletdep ~happstack-server
Dependency ranges changed: hamlet, happstack-server
Files
- Happstack/Server/Hamlet.hs +6/−34
- happstack-hamlet.cabal +3/−3
Happstack/Server/Hamlet.hs view
@@ -1,3 +1,4 @@+-- |This module provides support for using Hamlet with Happstack. Hamlet provides type-safe HTML generation. More information can be found at <http://patch-tag.com/r/mae/happstack/snapshot/current/content/pretty/happstack-hamlet/demo.hs> and <http://hackage.haskell.org/package/hamlet>. {-# LANGUAGE QuasiQuotes, ScopedTypeVariables, FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, UndecidableInstances #-} module Happstack.Server.Hamlet ( hamletToResponse @@ -10,48 +11,19 @@ import qualified Data.Text.Lazy.Encoding as T import Text.Hamlet-import Text.Hamlet.Monad (hamletToText, liftHamlet) import Happstack.Server -- |turn a 'Hamlet' template into a Happstack 'Response'-hamletToResponse :: (Monad m) => - (url -> String) -> -- ^ function to 'url' values in the template into their 'String' representation- Hamlet url m () -> -- ^ a 'Hamlet' template- m Response+hamletToResponse :: (url -> [(String, String)] -> String) -- ^ function to 'url' values in the template into their 'String' representation+ -> Hamlet url -- ^ a 'Hamlet' template+ -> Response hamletToResponse showFn hamlet = - do msg <- hamletToText showFn hamlet- return $ toResponse_ (B.pack "text/html; charset=UTF-8") (T.encodeUtf8 msg)+ let msg = renderHamlet showFn hamlet+ in toResponse_ (B.pack "text/html; charset=UTF-8") msg -- available as toResponseBS in happstack-server >= 0.5 toResponse_ :: B.ByteString -> L.ByteString -> Response toResponse_ contentType message = let res = Response 200 M.empty nullRsFlags message Nothing in setHeaderBS (B.pack "Content-Type") contentType res--mapHamlet :: forall a b url m. (Monad m) => (m a -> m b) -> Hamlet url m a -> Hamlet url m b-mapHamlet f m = - Hamlet $ \showFn seed iteratee -> f' (runHamlet m showFn seed iteratee)- where- f' :: m (Either seed (a, seed)) -> m (Either seed (b, seed))- f' m =- do e <- m- case e of- (Left s) -> return (Left s)- (Right (a, seed)) -> - do b <- f (return a)- return (Right (b, seed))--instance (ServerMonad m) => ServerMonad (Hamlet url m) where- askRq = liftHamlet askRq- localRq f = mapHamlet (localRq f)--instance (FilterMonad r m) => FilterMonad r (Hamlet url m) where- setFilter = liftHamlet . setFilter- composeFilter = liftHamlet . composeFilter- getFilter = mapHamlet getFilter--instance (WebMonad a m) => WebMonad a (Hamlet url m) where- finishWith = liftHamlet . finishWith--
happstack-hamlet.cabal view
@@ -1,5 +1,5 @@ Name: happstack-hamlet-Version: 0.2.1+Version: 6.0.0 Synopsis: Support for Hamlet HTML templates in Happstack Description: Happstack is a web application development framework. @@ -27,8 +27,8 @@ Build-depends: base >= 3 && <5, bytestring, containers,- happstack-server >= 0.4.3 && <0.6 ,- hamlet >= 0.2 && <3,+ happstack-server >= 6.0 && < 6.1 ,+ hamlet >= 0.5 && <0.8, text -- Modules not exported by this package.