defaultTemplateAttribs
This commit is contained in:
parent
38a15e4692
commit
3a3d970476
@ -3,6 +3,7 @@
|
|||||||
{-# LANGUAGE TypeSynonymInstances #-}
|
{-# LANGUAGE TypeSynonymInstances #-}
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
|
{-# LANGUAGE PackageImports #-}
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
--
|
--
|
||||||
-- Module : Yesod.Request
|
-- Module : Yesod.Request
|
||||||
@ -48,7 +49,7 @@ import Data.Convertible.Text
|
|||||||
import Control.Arrow ((***))
|
import Control.Arrow ((***))
|
||||||
import Control.Exception (SomeException (..))
|
import Control.Exception (SomeException (..))
|
||||||
import Data.Maybe (fromMaybe)
|
import Data.Maybe (fromMaybe)
|
||||||
import Control.Monad.Trans
|
import "transformers" Control.Monad.Trans
|
||||||
import Control.Concurrent.MVar
|
import Control.Concurrent.MVar
|
||||||
|
|
||||||
#if TEST
|
#if TEST
|
||||||
|
|||||||
@ -21,13 +21,14 @@ import Text.StringTemplate
|
|||||||
import Yesod.Response
|
import Yesod.Response
|
||||||
import Yesod.Yesod
|
import Yesod.Yesod
|
||||||
import Yesod.Handler
|
import Yesod.Handler
|
||||||
|
import Control.Monad (join)
|
||||||
|
|
||||||
type Template = StringTemplate Text
|
type Template = StringTemplate Text
|
||||||
type TemplateGroup = STGroup Text
|
type TemplateGroup = STGroup Text
|
||||||
|
|
||||||
class Yesod y => YesodTemplate y where
|
class Yesod y => YesodTemplate y where
|
||||||
getTemplateGroup :: y -> TemplateGroup
|
getTemplateGroup :: y -> TemplateGroup
|
||||||
-- FIXME defaultTemplateAttribs :: y -> HtmlTemplate -> Handler y HtmlTemplate
|
defaultTemplateAttribs :: y -> HtmlTemplate -> IO HtmlTemplate
|
||||||
|
|
||||||
getTemplateGroup' :: YesodTemplate y => Handler y TemplateGroup
|
getTemplateGroup' :: YesodTemplate y => Handler y TemplateGroup
|
||||||
getTemplateGroup' = getTemplateGroup `fmap` getYesod
|
getTemplateGroup' = getTemplateGroup `fmap` getYesod
|
||||||
@ -49,11 +50,16 @@ templateHtml :: YesodTemplate y
|
|||||||
-> Handler y RepHtml
|
-> Handler y RepHtml
|
||||||
templateHtml tn f = do
|
templateHtml tn f = do
|
||||||
tg <- getTemplateGroup'
|
tg <- getTemplateGroup'
|
||||||
|
y <- getYesod
|
||||||
t <- case getStringTemplate tn tg of
|
t <- case getStringTemplate tn tg of
|
||||||
Nothing -> failure $ NoSuchTemplate tn
|
Nothing -> failure $ NoSuchTemplate tn
|
||||||
Just x -> return x
|
Just x -> return x
|
||||||
return $ RepHtml $ ioTextToContent $ fmap (render . unHtmlTemplate)
|
return $ RepHtml $ ioTextToContent
|
||||||
$ f $ HtmlTemplate t
|
$ fmap (render . unHtmlTemplate)
|
||||||
|
$ join
|
||||||
|
$ fmap f
|
||||||
|
$ defaultTemplateAttribs y
|
||||||
|
$ HtmlTemplate t
|
||||||
|
|
||||||
setHtmlAttrib :: ConvertSuccess x HtmlObject
|
setHtmlAttrib :: ConvertSuccess x HtmlObject
|
||||||
=> String -> x -> HtmlTemplate -> HtmlTemplate
|
=> String -> x -> HtmlTemplate -> HtmlTemplate
|
||||||
@ -69,10 +75,16 @@ templateHtmlJson :: YesodTemplate y
|
|||||||
-> Handler y RepHtmlJson
|
-> Handler y RepHtmlJson
|
||||||
templateHtmlJson tn ho f = do
|
templateHtmlJson tn ho f = do
|
||||||
tg <- getTemplateGroup'
|
tg <- getTemplateGroup'
|
||||||
|
y <- getYesod
|
||||||
t <- case getStringTemplate tn tg of
|
t <- case getStringTemplate tn tg of
|
||||||
Nothing -> failure $ NoSuchTemplate tn
|
Nothing -> failure $ NoSuchTemplate tn
|
||||||
Just x -> return x
|
Just x -> return x
|
||||||
return $ RepHtmlJson
|
return $ RepHtmlJson
|
||||||
(ioTextToContent $ fmap (render . unHtmlTemplate)
|
( ioTextToContent
|
||||||
$ f ho $ HtmlTemplate t)
|
$ fmap (render . unHtmlTemplate)
|
||||||
|
$ join
|
||||||
|
$ fmap (f ho)
|
||||||
|
$ defaultTemplateAttribs y
|
||||||
|
$ HtmlTemplate t
|
||||||
|
)
|
||||||
(hoToJsonContent ho)
|
(hoToJsonContent ho)
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import Network.Wai.Handler.SimpleServer
|
|||||||
data HelloWorld = HelloWorld TemplateGroup
|
data HelloWorld = HelloWorld TemplateGroup
|
||||||
instance YesodTemplate HelloWorld where
|
instance YesodTemplate HelloWorld where
|
||||||
getTemplateGroup (HelloWorld tg) = tg
|
getTemplateGroup (HelloWorld tg) = tg
|
||||||
|
defaultTemplateAttribs _ = return . setHtmlAttrib "default" "<DEFAULT>"
|
||||||
instance Yesod HelloWorld where
|
instance Yesod HelloWorld where
|
||||||
resources = [$mkResources|
|
resources = [$mkResources|
|
||||||
/:
|
/:
|
||||||
|
|||||||
@ -1,2 +1,3 @@
|
|||||||
This is a more realistic template.
|
This is a more realistic template.
|
||||||
foo: $foo$
|
foo: $foo$
|
||||||
|
This is the default argument: $default$
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user