packages feed

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 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