yesod/yesod-form/Yesod/Form/Class.hs
2012-03-25 18:49:35 +02:00

79 lines
2.0 KiB
Haskell

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleContexts #-}
module Yesod.Form.Class
( {- FIXME ToForm (..)
, -} ToField (..)
) where
import Text.Hamlet
import Yesod.Form.Fields
import Yesod.Form.Types
import Yesod.Form.Functions (areq, aopt)
import Data.Int (Int64)
import Data.Time (Day, TimeOfDay)
import Data.Text (Text)
import Yesod.Message (RenderMessage)
{-
class ToForm a where
toForm :: AForm sub master a
-}
class ToField a master where
toField :: RenderMessage master FormMessage
=> FieldSettings master -> Maybe a -> AForm sub master a
{- FIXME
instance ToFormField String y where
toFormField = stringField
instance ToFormField (Maybe String) y where
toFormField = maybeStringField
-}
instance ToField Text master where
toField = areq textField
instance ToField (Maybe Text) master where
toField = aopt textField
instance ToField Int master where
toField = areq intField
instance ToField (Maybe Int) master where
toField = aopt intField
instance ToField Int64 master where
toField = areq intField
instance ToField (Maybe Int64) master where
toField = aopt intField
instance ToField Double master where
toField = areq doubleField
instance ToField (Maybe Double) master where
toField = aopt doubleField
instance ToField Day master where
toField = areq dayField
instance ToField (Maybe Day) master where
toField = aopt dayField
instance ToField TimeOfDay master where
toField = areq timeField
instance ToField (Maybe TimeOfDay) master where
toField = aopt timeField
instance ToField Html master where
toField = areq htmlField
instance ToField (Maybe Html) master where
toField = aopt htmlField
instance ToField Textarea master where
toField = areq textareaField
instance ToField (Maybe Textarea) master where
toField = aopt textareaField
{- FIXME
instance ToFormField Bool y where
toFormField = boolField
-}