fpco-api-1.2.0.3: src/library/Language/Fay/Yesod.hs
-- NOTE: This file is auto-generated.
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE CPP #-}
-- | Module to be shared between server and client.
--
-- This module must be valid for both GHC and Fay.
module Language.Fay.Yesod where
import Prelude
#ifdef FAY
import FFI
#else
import Fay.FFI
#endif
import Data.Data
#ifdef FAY
data Text = Text
deriving (Show, Read, Eq, Typeable, Data)
fromString :: String -> Text
fromString = ffi "%1"
toString :: Text -> String
toString = ffi "%1"
#else
import qualified Data.Text as T
type Text = T.Text
fromString :: String -> Text
fromString = T.pack
toString :: Text -> String
toString = T.unpack
#endif
-- | A proxy type for specifying what type a command should return. The final
-- field for each data constructor in a command datatype should be @Returns@.
data Returns a = Returns
deriving (Eq, Show, Read, Data, Typeable)
-- | Call a command.
call :: (Returns a -> command)
-> (a -> Fay ()) -- ^ Success Handler
-> Fay ()
call f g = ajaxCommand (f Returns) g
-- ! Call a command, handling errors as well
callWithErrorHandling
:: (Returns a -> command)
-> (a -> Fay ()) -- ^ Success Handler
-> (Fay ()) -- ^ Failure Handler
-> Fay ()
callWithErrorHandling f g h = ajaxCommandWithErrorHandling (f Returns) g h
-- | Run the AJAX command.
ajaxCommand :: Automatic command
-> (Automatic a -> Fay ()) -- ^ Success Handler
-> Fay ()
ajaxCommand = ffi "jQuery['ajax']({ url: window['yesodFayCommandPath'], type: 'POST', data: { json: JSON.stringify(%1) }, dataType: 'json', success : %2})"
-- | Run the AJAX command, handling errors as well
ajaxCommandWithErrorHandling
:: Automatic command
-> (Automatic a -> Fay ()) -- ^ Success Handler
-> (Fay ()) -- ^ Failure Handler
-> Fay ()
ajaxCommandWithErrorHandling = ffi "jQuery['ajax']({ url: window['yesodFayCommandPath'], type: 'POST', data: { json: JSON.stringify(%1) }, dataType: 'json', success : %2, error: %3})"