diff --git a/yesod-core/Yesod/Message.hs b/yesod-core/Yesod/Message.hs index a37781ad..49db5015 100644 --- a/yesod-core/Yesod/Message.hs +++ b/yesod-core/Yesod/Message.hs @@ -2,10 +2,12 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeSynonymInstances #-} +{-# LANGUAGE ExistentialQuantification #-} module Yesod.Message ( mkMessage , RenderMessage (..) , ToMessage (..) + , SomeMessage (..) ) where import Language.Haskell.TH.Syntax @@ -248,3 +250,5 @@ parseVar s = case break (== '@') s of (x, '@':y) -> (x, Just y) _ -> (s, Nothing) + +data SomeMessage master = forall msg. RenderMessage master msg => SomeMessage msg diff --git a/yesod-form/Yesod/Form/Fields.hs b/yesod-form/Yesod/Form/Fields.hs index 971d75a2..1e24754c 100644 --- a/yesod-form/Yesod/Form/Fields.hs +++ b/yesod-form/Yesod/Form/Fields.hs @@ -30,7 +30,7 @@ module Yesod.Form.Fields import Yesod.Form.Types import Yesod.Widget -import Yesod.Message (RenderMessage) +import Yesod.Message (RenderMessage, SomeMessage (..)) import Text.Hamlet import Text.Blaze (ToHtml (..), preEscapedString, unsafeByteString) import Text.Cassius diff --git a/yesod-form/Yesod/Form/Functions.hs b/yesod-form/Yesod/Form/Functions.hs index 9a901108..90d3e6b7 100644 --- a/yesod-form/Yesod/Form/Functions.hs +++ b/yesod-form/Yesod/Form/Functions.hs @@ -41,7 +41,7 @@ import Control.Monad.Trans.Class (lift) import Control.Monad (liftM, join) import Text.Blaze (Html, toHtml) import Yesod.Handler (GHandler, GGHandler, getRequest, runRequestBody, newIdent, getYesod) -import Yesod.Core (RenderMessage, liftIOHandler) +import Yesod.Core (RenderMessage, liftIOHandler, SomeMessage (..)) import Yesod.Widget (GWidget, whamlet) import Yesod.Request (reqNonce, reqWaiRequest, reqGetParams, languages) import Network.Wai (requestMethod) diff --git a/yesod-form/Yesod/Form/Input.hs b/yesod-form/Yesod/Form/Input.hs index 65c679a1..45c742c4 100644 --- a/yesod-form/Yesod/Form/Input.hs +++ b/yesod-form/Yesod/Form/Input.hs @@ -15,7 +15,7 @@ import Control.Applicative (Applicative (..)) import Yesod.Handler (GHandler, GGHandler, invalidArgs, runRequestBody, getRequest, getYesod, liftIOHandler) import Yesod.Request (reqGetParams, languages) import Control.Monad (liftM) -import Yesod.Message (RenderMessage (..)) +import Yesod.Message (RenderMessage (..), SomeMessage (..)) import qualified Data.Map as Map import Data.Maybe (fromMaybe) diff --git a/yesod-form/Yesod/Form/Jquery.hs b/yesod-form/Yesod/Form/Jquery.hs index c830da08..66fe67a3 100644 --- a/yesod-form/Yesod/Form/Jquery.hs +++ b/yesod-form/Yesod/Form/Jquery.hs @@ -27,7 +27,7 @@ import Text.Julius (julius) import Control.Monad.Trans.Class (lift) import Data.Text (Text, pack, unpack) import Data.Monoid (mconcat) -import Yesod.Core (RenderMessage) +import Yesod.Core (RenderMessage, SomeMessage (..)) #if __GLASGOW_HASKELL__ >= 700 #define HTML html diff --git a/yesod-form/Yesod/Form/Types.hs b/yesod-form/Yesod/Form/Types.hs index 48f623fc..f5f87345 100644 --- a/yesod-form/Yesod/Form/Types.hs +++ b/yesod-form/Yesod/Form/Types.hs @@ -12,7 +12,6 @@ module Yesod.Form.Types , Form , AForm (..) -- * Build forms - , SomeMessage (..) , Field (..) , FieldSettings (..) , FieldView (..) @@ -26,7 +25,7 @@ import Text.Blaze (Html, ToHtml (toHtml)) import Control.Applicative ((<$>), Applicative (..)) import Control.Monad (liftM) import Data.String (IsString (..)) -import Yesod.Core (RenderMessage, GGHandler, GWidget) +import Yesod.Core (GGHandler, GWidget, SomeMessage) import qualified Data.Map as Map -- | A form can produce three different results: there was no data available, @@ -113,8 +112,6 @@ data FieldView sub master = FieldView , fvRequired :: Bool } -data SomeMessage master = forall msg. RenderMessage master msg => SomeMessage msg - data Field sub master a = Field { fieldParse :: [Text] -> GGHandler sub master IO (Either (SomeMessage master) (Maybe a)) -- | ID, name, (invalid text OR legimiate result), required?