hamlet 0.9

This commit is contained in:
Michael Snoyman 2011-07-19 09:39:21 +03:00
parent f02f142719
commit 53b7c3b810
5 changed files with 20 additions and 18 deletions

View File

@ -32,8 +32,8 @@ import Yesod.Form.Types
import Yesod.Widget
import Yesod.Message (RenderMessage)
import Yesod.Handler (GGHandler)
import Text.Hamlet hiding (renderHtml)
import Text.Blaze (ToHtml (..))
import Text.Hamlet
import Text.Blaze (ToHtml (..), preEscapedString, unsafeByteString)
import Text.Cassius
import Data.Time (Day, TimeOfDay(..))
import qualified Text.Email.Validate as Email
@ -55,7 +55,7 @@ import qualified Data.ByteString.Lazy as L
import Data.Text (Text, unpack, pack)
import qualified Data.Text.Read
import Data.Monoid (mappend)
import Text.Hamlet.NonPoly (html)
import Text.Hamlet (html)
#if __GLASGOW_HASKELL__ >= 700
#define WHAMLET whamlet
@ -289,11 +289,11 @@ searchField :: Monad monad => AutoFocus -> Field (GGWidget master monad ()) Form
searchField autoFocus = Field
{ fieldParse = blank Right
, fieldView = \theId name val isReq -> do
addHtml [HAMLET|\
[WHAMLET|\
<input id="#{theId}" name="#{name}" type="search" :isReq:required="" :autoFocus:autofocus="" value="#{either id id val}">
|]
when autoFocus $ do
addHtml $ [HAMLET|\<script>if (!('autofocus' in document.createElement('input'))) {document.getElementById('#{theId}').focus();}</script>
[WHAMLET|\<script>if (!('autofocus' in document.createElement('input'))) {document.getElementById('#{theId}').focus();}</script>
|]
addCassius [CASSIUS|
#{theId}
@ -307,8 +307,8 @@ urlField = Field
case parseURI $ unpack s of
Nothing -> Left $ MsgInvalidUrl s
Just _ -> Right s
, fieldView = \theId name val isReq -> addHtml
[HAMLET|
, fieldView = \theId name val isReq ->
[WHAMLET|
<input ##{theId} name=#{name} type=url :isReq:required value=#{either id id val}>
|]
}
@ -317,12 +317,12 @@ selectField :: (Eq a, Monad monad, RenderMessage master FormMessage) => [(Text,
selectField = selectFieldHelper
(\theId name inside -> [WHAMLET|<select ##{theId} name=#{name}>^{inside}|])
(\_theId _name isSel -> [WHAMLET|<option value=none :isSel:selected>_{MsgSelectNone}|])
(\_theId _name value isSel text -> addHtml [HTML|<option value=#{value} :isSel:selected>#{text}|])
(\_theId _name value isSel text -> [WHAMLET|<option value=#{value} :isSel:selected>#{text}|])
multiSelectField :: (Show a, Eq a, Monad monad, RenderMessage master FormMessage) => [(Text, a)] -> Field (GGWidget master (GGHandler sub master monad) ()) FormMessage [a]
multiSelectField = multiSelectFieldHelper
(\theId name inside -> [WHAMLET|<select ##{theId} multiple name=#{name}>^{inside}|])
(\_theId _name value isSel text -> addHtml [HTML|<option value=#{value} :isSel:selected>#{text}|])
(\_theId _name value isSel text -> [WHAMLET|<option value=#{value} :isSel:selected>#{text}|])
radioField :: (Eq a, Monad monad, RenderMessage master FormMessage) => [(Text, a)] -> Field (GGWidget master (GGHandler sub master monad) ()) FormMessage a
radioField = selectFieldHelper

View File

@ -38,7 +38,7 @@ import Yesod.Core (RenderMessage)
import Yesod.Widget (GGWidget, whamlet)
import Yesod.Request (reqNonce, reqWaiRequest, reqGetParams, languages)
import Network.Wai (requestMethod)
import Text.Hamlet.NonPoly (html)
import Text.Hamlet (html)
import Data.Monoid (mempty)
import Data.Maybe (listToMaybe)
import Yesod.Message (RenderMessage (..))

View File

@ -22,17 +22,19 @@ import Data.Time (UTCTime (..), Day, TimeOfDay (..), timeOfDayToTime,
timeToTimeOfDay)
import Data.Char (isSpace)
import Data.Default
import Text.Hamlet (hamlet)
import Text.Hamlet (html)
import Text.Julius (julius)
import Control.Monad.Trans.Class (lift)
import Data.Text (Text, pack, unpack)
import Data.Monoid (mconcat)
#if __GLASGOW_HASKELL__ >= 700
#define HTML html
#define HAMLET hamlet
#define CASSIUS cassius
#define JULIUS julius
#else
#define HTML $html
#define HAMLET $hamlet
#define CASSIUS $cassius
#define JULIUS $julius
@ -76,7 +78,7 @@ jqueryDayField jds = Field
. readMay
. unpack
, fieldView = \theId name val isReq -> do
addHtml [HAMLET|\
addHtml [HTML|\
<input id="#{theId}" name="#{name}" type="date" :isReq:required="" value="#{showVal val}">
|]
addScript' urlJqueryJs
@ -127,7 +129,7 @@ jqueryDayTimeField :: YesodJquery master => Field (GWidget sub master ()) FormMe
jqueryDayTimeField = Field
{ fieldParse = blank $ parseUTCTime . unpack
, fieldView = \theId name val isReq -> do
addHtml [HAMLET|\
addHtml [HTML|\
<input id="#{theId}" name="#{name}" :isReq:required="" value="#{showVal val}">
|]
addScript' urlJqueryJs
@ -156,7 +158,7 @@ jqueryAutocompleteField :: YesodJquery master => Route master -> Field (GWidget
jqueryAutocompleteField src = Field
{ fieldParse = blank $ Right
, fieldView = \theId name val isReq -> do
addHtml [HAMLET|\
addHtml [HTML|\
<input id="#{theId}" name="#{name}" type="text" :isReq:required="" value="#{either id id val}" .autocomplete>
|]
addScript' urlJqueryJs

View File

@ -14,7 +14,7 @@ import Yesod.Handler
import Yesod.Form
import Yesod.Widget
import Text.HTML.SanitizeXSS (sanitizeBalance)
import Text.Hamlet (Html, hamlet)
import Text.Hamlet (Html, html)
import Text.Julius (julius)
import Text.Blaze.Renderer.String (renderHtml)
import Text.Blaze (preEscapedString)
@ -39,9 +39,9 @@ nicHtmlField = Field
, fieldView = \theId name val _isReq -> do
addHtml
#if __GLASGOW_HASKELL__ >= 700
[hamlet|
[html|
#else
[$hamlet|
[$html|
#endif
<textarea id="#{theId}" name="#{name}" .html>#{showVal val}
|]

View File

@ -15,7 +15,7 @@ library
build-depends: base >= 4 && < 5
, yesod-core >= 0.9 && < 0.10
, time >= 1.1.4 && < 1.3
, hamlet >= 0.8.1 && < 0.9
, hamlet >= 0.9 && < 0.10
, persistent >= 0.6 && < 0.7
, yesod-persistent >= 0.2 && < 0.3
, template-haskell