whamlet embedding

This commit is contained in:
Michael Snoyman 2011-05-06 10:48:30 +03:00
parent 2f4cbaa093
commit dc737a397d
3 changed files with 19 additions and 3 deletions

View File

@ -44,7 +44,10 @@ getWhamletR = defaultLayout [$whamlet|
<h1>Test <h1>Test
<h2>@{WhamletR} <h2>@{WhamletR}
<h3>_{Goodbye} <h3>_{Goodbye}
^{embed}
|] |]
where
embed = [$whamlet|<h4>Embed|]
widgetTest :: Test widgetTest :: Test
widgetTest = testGroup "Test.Widget" widgetTest = testGroup "Test.Widget"
@ -69,4 +72,4 @@ case_whamlet = runner $ do
{ pathInfo = ["whamlet"] { pathInfo = ["whamlet"]
, requestHeaders = [("Accept-Language", "es")] , requestHeaders = [("Accept-Language", "es")]
} }
assertBody "<!DOCTYPE html>\n<html><head><title></title></head><body><h1>Test</h1><h2>http://test/whamlet</h2><h3>Adios</h3></body></html>" res assertBody "<!DOCTYPE html>\n<html><head><title></title></head><body><h1>Test</h1><h2>http://test/whamlet</h2><h3>Adios</h3><h4>Embed</h4></body></html>" res

View File

@ -15,6 +15,7 @@ module Yesod.Widget
, getMessageRender , getMessageRender
, whamlet , whamlet
, whamletFile , whamletFile
, ihamletToRepHtml
-- * Creating -- * Creating
-- ** Head of page -- ** Head of page
, setTitle , setTitle
@ -56,6 +57,7 @@ import Text.Lucius (Lucius)
import Text.Julius import Text.Julius
import Yesod.Handler import Yesod.Handler
(Route, GHandler, GGHandler, YesodSubRoute(..), toMasterHandlerMaybe, getYesod) (Route, GHandler, GGHandler, YesodSubRoute(..), toMasterHandlerMaybe, getYesod)
import Yesod.Content (RepHtml (..), toContent)
import Control.Applicative (Applicative) import Control.Applicative (Applicative)
import Control.Monad.IO.Class (MonadIO) import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Trans.Class (MonadTrans (lift)) import Control.Monad.Trans.Class (MonadTrans (lift))
@ -217,6 +219,8 @@ data PageContent url = PageContent
, pageBody :: Hamlet url , pageBody :: Hamlet url
} }
-- see if it's possible to get rid of sub here. Problem was yesod-auth, but maybe we can do something like:
-- instance YesodAuth m => YesodMessage m ...
class YesodMessage sub master where class YesodMessage sub master where
type Message sub master type Message sub master
renderMessage :: sub renderMessage :: sub
@ -253,4 +257,13 @@ rules = do
(Just $ helper [|lift getUrlRenderParams|]) (Just $ helper [|lift getUrlRenderParams|])
(Just $ helper [|lift getMessageRender|]) (Just $ helper [|lift getMessageRender|])
f env f env
return $ NP.HamletRules ah ur return $ NP.HamletRules ah ur $ \_ b -> return b
-- | Wraps the 'Content' generated by 'hamletToContent' in a 'RepHtml'.
ihamletToRepHtml :: (Monad mo, YesodMessage sub master)
=> NP.IHamlet (Message sub master) (Route master)
-> GGHandler sub master mo RepHtml
ihamletToRepHtml ih = do
urender <- getUrlRenderParams
mrender <- getMessageRender
return $ RepHtml $ toContent $ ih mrender urender

View File

@ -1,5 +1,5 @@
name: yesod-core name: yesod-core
version: 0.8.1 version: 0.8.2
license: BSD3 license: BSD3
license-file: LICENSE license-file: LICENSE
author: Michael Snoyman <michael@snoyman.com> author: Michael Snoyman <michael@snoyman.com>