yesod-core 0.8.0.1 → 0.8.1
raw patch · 2 files changed
+53/−4 lines, 2 filesdep ~hamletPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hamlet
API changes (from Hackage documentation)
+ Yesod.Widget: class YesodMessage sub master where { type family Message sub master; }
+ Yesod.Widget: getMessageRender :: (Monad mo, YesodMessage s m) => GGHandler s m mo (Message s m -> Html)
+ Yesod.Widget: renderMessage :: YesodMessage sub master => sub -> master -> [Text] -> Message sub master -> Html
+ Yesod.Widget: whamlet :: QuasiQuoter
+ Yesod.Widget: whamletFile :: FilePath -> Q Exp
Files
- Yesod/Widget.hs +51/−2
- yesod-core.cabal +2/−2
Yesod/Widget.hs view
@@ -1,6 +1,8 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE MultiParamTypeClasses #-} -- | Widgets combine HTML with JS and CSS dependencies with a unique identifier -- generator, allowing you to create truly modular HTML components. module Yesod.Widget@@ -8,6 +10,11 @@ GWidget , GGWidget (..) , PageContent (..)+ -- * Special Hamlet quasiquoter/TH for Widgets+ , YesodMessage (..)+ , getMessageRender+ , whamlet+ , whamletFile -- * Creating -- ** Head of page , setTitle@@ -42,14 +49,13 @@ import Data.Monoid import Control.Monad.Trans.RWS-import Text.Blaze (preEscapedText, preEscapedLazyText) import qualified Text.Blaze.Html5 as H import Text.Hamlet import Text.Cassius import Text.Lucius (Lucius) import Text.Julius import Yesod.Handler- (Route, GHandler, YesodSubRoute(..), toMasterHandlerMaybe, getYesod)+ (Route, GHandler, GGHandler, YesodSubRoute(..), toMasterHandlerMaybe, getYesod) import Control.Applicative (Applicative) import Control.Monad.IO.Class (MonadIO) import Control.Monad.Trans.Class (MonadTrans (lift))@@ -57,8 +63,13 @@ import Control.Monad (liftM) import Data.Text (Text) import qualified Data.Map as Map+import Language.Haskell.TH.Quote (QuasiQuoter)+import Language.Haskell.TH.Syntax (Q, Exp (InfixE, VarE, LamE), Pat (VarP), newName)+import Yesod.Handler (getUrlRenderParams, getYesodSub)+import Yesod.Request (languages) import Control.Monad.IO.Control (MonadControlIO)+import qualified Text.Hamlet.NonPoly as NP -- | A generic widget, allowing specification of both the subsite and master -- site datatypes. This is basically a large 'WriterT' stack keeping track of@@ -205,3 +216,41 @@ , pageHead :: Hamlet url , pageBody :: Hamlet url }++class YesodMessage sub master where+ type Message sub master+ renderMessage :: sub+ -> master+ -> [Text] -- ^ languages+ -> Message sub master+ -> Html++getMessageRender :: (Monad mo, YesodMessage s m) => GGHandler s m mo (Message s m -> Html)+getMessageRender = do+ s <- getYesodSub+ m <- getYesod+ l <- languages+ return $ renderMessage s m l++whamlet :: QuasiQuoter+whamlet = NP.hamletWithSettings rules NP.defaultHamletSettings++whamletFile :: FilePath -> Q Exp+whamletFile = NP.hamletFileWithSettings rules NP.defaultHamletSettings++rules :: Q NP.HamletRules+rules = do+ ah <- [|addHtml|]+ let helper qg f = do+ x <- newName "urender"+ e <- f $ VarE x+ let e' = LamE [VarP x] e+ g <- qg+ bind <- [|(>>=)|]+ return $ InfixE (Just g) bind (Just e')+ let ur f = do+ let env = NP.Env+ (Just $ helper [|lift getUrlRenderParams|])+ (Just $ helper [|lift getMessageRender|])+ f env+ return $ NP.HamletRules ah ur
yesod-core.cabal view
@@ -1,5 +1,5 @@ name: yesod-core-version: 0.8.0.1+version: 0.8.1 license: BSD3 license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -34,7 +34,7 @@ , text >= 0.5 && < 0.12 , template-haskell , web-routes-quasi >= 0.7.0.1 && < 0.8- , hamlet >= 0.8 && < 0.9+ , hamlet >= 0.8.1 && < 0.9 , blaze-builder >= 0.2.1 && < 0.4 , transformers >= 0.2 && < 0.3 , clientsession >= 0.6 && < 0.7