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
<h2>@{WhamletR}
<h3>_{Goodbye}
^{embed}
|]
where
embed = [$whamlet|<h4>Embed|]
widgetTest :: Test
widgetTest = testGroup "Test.Widget"
@ -69,4 +72,4 @@ case_whamlet = runner $ do
{ pathInfo = ["whamlet"]
, 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
, whamlet
, whamletFile
, ihamletToRepHtml
-- * Creating
-- ** Head of page
, setTitle
@ -56,6 +57,7 @@ import Text.Lucius (Lucius)
import Text.Julius
import Yesod.Handler
(Route, GHandler, GGHandler, YesodSubRoute(..), toMasterHandlerMaybe, getYesod)
import Yesod.Content (RepHtml (..), toContent)
import Control.Applicative (Applicative)
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Trans.Class (MonadTrans (lift))
@ -217,6 +219,8 @@ data PageContent url = PageContent
, 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
type Message sub master
renderMessage :: sub
@ -253,4 +257,13 @@ rules = do
(Just $ helper [|lift getUrlRenderParams|])
(Just $ helper [|lift getMessageRender|])
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
version: 0.8.1
version: 0.8.2
license: BSD3
license-file: LICENSE
author: Michael Snoyman <michael@snoyman.com>