Better ToWidget* instances
This commit is contained in:
parent
1361bdf90e
commit
507ad4a772
@ -11,6 +11,8 @@ import Yesod.Content
|
|||||||
import Yesod.Dispatch
|
import Yesod.Dispatch
|
||||||
import Yesod.Widget
|
import Yesod.Widget
|
||||||
import Text.Julius
|
import Text.Julius
|
||||||
|
import Text.Lucius
|
||||||
|
import Text.Hamlet
|
||||||
|
|
||||||
import Network.Wai
|
import Network.Wai
|
||||||
import Network.Wai.Test
|
import Network.Wai.Test
|
||||||
@ -27,12 +29,13 @@ mkYesod "Y" [$parseRoutes|
|
|||||||
/ RootR GET
|
/ RootR GET
|
||||||
/foo/*Strings MultiR GET
|
/foo/*Strings MultiR GET
|
||||||
/whamlet WhamletR GET
|
/whamlet WhamletR GET
|
||||||
|
/towidget TowidgetR GET
|
||||||
|]
|
|]
|
||||||
|
|
||||||
instance Yesod Y where
|
instance Yesod Y where
|
||||||
approot _ = "http://test"
|
approot _ = "http://test"
|
||||||
|
|
||||||
getRootR = defaultLayout $ addJuliusBody [$julius|<not escaped>|]
|
getRootR = defaultLayout $ toWidgetBody [$julius|<not escaped>|]
|
||||||
getMultiR _ = return ()
|
getMultiR _ = return ()
|
||||||
|
|
||||||
data Msg = Hello | Goodbye
|
data Msg = Hello | Goodbye
|
||||||
@ -44,6 +47,18 @@ instance RenderMessage Y Msg where
|
|||||||
renderMessage a (_:xs) y = renderMessage a xs y
|
renderMessage a (_:xs) y = renderMessage a xs y
|
||||||
renderMessage a [] y = renderMessage a ["en"] y
|
renderMessage a [] y = renderMessage a ["en"] y
|
||||||
|
|
||||||
|
getTowidgetR = defaultLayout $ do
|
||||||
|
toWidget [julius|foo|]
|
||||||
|
toWidgetHead [julius|foo|]
|
||||||
|
toWidgetBody [julius|foo|]
|
||||||
|
|
||||||
|
toWidget [lucius|foo{bar:baz}|]
|
||||||
|
toWidgetHead [lucius|foo{bar:baz}|]
|
||||||
|
|
||||||
|
toWidget [hamlet|<foo>|]
|
||||||
|
toWidgetHead [hamlet|<foo>|]
|
||||||
|
toWidgetBody [hamlet|<foo>|]
|
||||||
|
|
||||||
getWhamletR = defaultLayout [$whamlet|
|
getWhamletR = defaultLayout [$whamlet|
|
||||||
<h1>Test
|
<h1>Test
|
||||||
<h2>@{WhamletR}
|
<h2>@{WhamletR}
|
||||||
|
|||||||
@ -115,43 +115,45 @@ class ToWidget sub master a where
|
|||||||
-- addHamlet/Cassius/Lucius/Julius stuff. For the most part, toWidget* will be
|
-- addHamlet/Cassius/Lucius/Julius stuff. For the most part, toWidget* will be
|
||||||
-- sufficient. For somethings, like addLuciusMedia, create addCssUrlMedia.
|
-- sufficient. For somethings, like addLuciusMedia, create addCssUrlMedia.
|
||||||
|
|
||||||
instance url ~ Route master => ToWidget sub master (HtmlUrl url) where
|
type RY master = Route master -> [(Text, Text)] -> Text
|
||||||
|
|
||||||
|
instance render ~ RY master => ToWidget sub master (render -> Html) where
|
||||||
toWidget = addHamlet
|
toWidget = addHamlet
|
||||||
instance url ~ Route master => ToWidget sub master (CssUrl url) where
|
instance render ~ RY master => ToWidget sub master (render -> Css) where
|
||||||
toWidget = addCassius
|
toWidget = addCassius
|
||||||
instance url ~ Route master => ToWidget sub master (JavascriptUrl url) where
|
instance render ~ RY master => ToWidget sub master (render -> Javascript) where
|
||||||
toWidget = addJulius
|
toWidget = addJulius
|
||||||
instance ToWidget sub master (GWidget sub master ()) where
|
instance ToWidget sub master (GWidget sub master ()) where
|
||||||
toWidget = id
|
toWidget = id
|
||||||
instance ToWidget sub master Html where
|
instance ToWidget sub master Html where
|
||||||
toWidget = addHtml
|
toWidget = addHtml
|
||||||
instance url ~ Route master => ToWidget sub master (Coffee url) where
|
instance render ~ RY master => ToWidget sub master (render -> Coffeescript) where
|
||||||
toWidget = addCoffee
|
toWidget = addCoffee
|
||||||
|
|
||||||
class ToWidgetBody sub master a where
|
class ToWidgetBody sub master a where
|
||||||
toWidgetBody :: a -> GWidget sub master ()
|
toWidgetBody :: a -> GWidget sub master ()
|
||||||
|
|
||||||
instance url ~ Route master => ToWidgetBody sub master (HtmlUrl url) where
|
instance render ~ RY master => ToWidgetBody sub master (render -> Html) where
|
||||||
toWidgetBody = addHamlet
|
toWidgetBody = addHamlet
|
||||||
instance url ~ Route master => ToWidgetBody sub master (JavascriptUrl url) where
|
instance render ~ RY master => ToWidgetBody sub master (render -> Javascript) where
|
||||||
toWidgetBody = addJulius
|
toWidgetBody = addJuliusBody
|
||||||
instance ToWidgetBody sub master Html where
|
instance ToWidgetBody sub master Html where
|
||||||
toWidgetBody = addHtml
|
toWidgetBody = addHtml
|
||||||
instance url ~ Route master => ToWidgetBody sub master (Coffee url) where
|
instance render ~ RY master => ToWidgetBody sub master (render -> Coffeescript) where
|
||||||
toWidgetBody = addCoffeeBody
|
toWidgetBody = addCoffeeBody
|
||||||
|
|
||||||
class ToWidgetHead sub master a where
|
class ToWidgetHead sub master a where
|
||||||
toWidgetHead :: a -> GWidget sub master ()
|
toWidgetHead :: a -> GWidget sub master ()
|
||||||
|
|
||||||
instance url ~ Route master => ToWidgetHead sub master (HtmlUrl url) where
|
instance render ~ RY master => ToWidgetHead sub master (render -> Html) where
|
||||||
toWidgetHead = addHamletHead
|
toWidgetHead = addHamletHead
|
||||||
instance url ~ Route master => ToWidgetHead sub master (CssUrl url) where
|
instance render ~ RY master => ToWidgetHead sub master (render -> Css) where
|
||||||
toWidgetHead = addCassius
|
toWidgetHead = addCassius
|
||||||
instance url ~ Route master => ToWidgetHead sub master (JavascriptUrl url) where
|
instance render ~ RY master => ToWidgetHead sub master (render -> Javascript) where
|
||||||
toWidgetHead = addJulius
|
toWidgetHead = addJulius
|
||||||
instance ToWidgetHead sub master Html where
|
instance ToWidgetHead sub master Html where
|
||||||
toWidgetHead = addHtmlHead
|
toWidgetHead = addHtmlHead
|
||||||
instance url ~ Route master => ToWidgetHead sub master (Coffee url) where
|
instance render ~ RY master => ToWidgetHead sub master (render -> Coffeescript) where
|
||||||
toWidgetHead = addCoffee
|
toWidgetHead = addCoffee
|
||||||
|
|
||||||
-- | Set the page title. Calling 'setTitle' multiple times overrides previously
|
-- | Set the page title. Calling 'setTitle' multiple times overrides previously
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user