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

View File

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

View File

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

View File

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

View File

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