{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeFamilies, UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Happstack.Server.XMLGenT where
import Control.Applicative (Alternative(..))
import Control.Monad (MonadPlus(..))
import Control.Monad.Trans (MonadIO(..))
import Happstack.Server.SimpleHTTP (ServerMonad(..), FilterMonad(..), WebMonad(..), HasRqData(..), Happstack(..), Response)
import HSP.XMLGenerator (XMLGenT(..))
import HSP.Monad (HSPT(..))
instance (ServerMonad m) => ServerMonad (XMLGenT m) where
askRq :: XMLGenT m Request
askRq = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall (m :: * -> *). ServerMonad m => m Request
askRq
localRq :: forall a. (Request -> Request) -> XMLGenT m a -> XMLGenT m a
localRq Request -> Request
f (XMLGenT m a
m) = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall (m :: * -> *) a.
ServerMonad m =>
(Request -> Request) -> m a -> m a
localRq Request -> Request
f m a
m)
instance (FilterMonad a m) => FilterMonad a (XMLGenT m) where
setFilter :: (a -> a) -> XMLGenT m ()
setFilter = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
setFilter
composeFilter :: (a -> a) -> XMLGenT m ()
composeFilter a -> a
f = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
composeFilter a -> a
f)
getFilter :: forall b. XMLGenT m b -> XMLGenT m (b, a -> a)
getFilter (XMLGenT m b
m) = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall a (m :: * -> *) b. FilterMonad a m => m b -> m (b, a -> a)
getFilter m b
m)
instance (WebMonad a m) => WebMonad a (XMLGenT m) where
finishWith :: forall b. a -> XMLGenT m b
finishWith a
r = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall a b. (a -> b) -> a -> b
$ forall a (m :: * -> *) b. WebMonad a m => a -> m b
finishWith a
r
instance (HasRqData m) => (HasRqData (XMLGenT m)) where
askRqEnv :: XMLGenT m RqEnv
askRqEnv = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall (m :: * -> *). HasRqData m => m RqEnv
askRqEnv
localRqEnv :: forall a. (RqEnv -> RqEnv) -> XMLGenT m a -> XMLGenT m a
localRqEnv RqEnv -> RqEnv
f (XMLGenT m a
m) = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall (m :: * -> *) a.
HasRqData m =>
(RqEnv -> RqEnv) -> m a -> m a
localRqEnv RqEnv -> RqEnv
f m a
m)
rqDataError :: forall a. Errors String -> XMLGenT m a
rqDataError = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. HasRqData m => Errors String -> m a
rqDataError
instance (Alternative m, MonadPlus m, Functor m, MonadIO m, ServerMonad m, FilterMonad a m, WebMonad a m, HasRqData m, a ~ Response) => Happstack (XMLGenT m)
instance (ServerMonad m) => ServerMonad (HSPT xml m) where
askRq :: HSPT xml m Request
askRq = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall (m :: * -> *). ServerMonad m => m Request
askRq
localRq :: forall a. (Request -> Request) -> HSPT xml m a -> HSPT xml m a
localRq Request -> Request
f (HSPT m a
m) = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall (m :: * -> *) a.
ServerMonad m =>
(Request -> Request) -> m a -> m a
localRq Request -> Request
f m a
m)
instance (FilterMonad a m) => FilterMonad a (HSPT xml m) where
setFilter :: (a -> a) -> HSPT xml m ()
setFilter = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
setFilter
composeFilter :: (a -> a) -> HSPT xml m ()
composeFilter a -> a
f = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
composeFilter a -> a
f)
getFilter :: forall b. HSPT xml m b -> HSPT xml m (b, a -> a)
getFilter (HSPT m b
m) = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall a (m :: * -> *) b. FilterMonad a m => m b -> m (b, a -> a)
getFilter m b
m)
instance (WebMonad a m) => WebMonad a (HSPT xml m) where
finishWith :: forall b. a -> HSPT xml m b
finishWith a
r = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall a b. (a -> b) -> a -> b
$ forall a (m :: * -> *) b. WebMonad a m => a -> m b
finishWith a
r
instance (HasRqData m) => (HasRqData (HSPT xml m)) where
askRqEnv :: HSPT xml m RqEnv
askRqEnv = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall (m :: * -> *). HasRqData m => m RqEnv
askRqEnv
localRqEnv :: forall a. (RqEnv -> RqEnv) -> HSPT xml m a -> HSPT xml m a
localRqEnv RqEnv -> RqEnv
f (HSPT m a
m) = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall (m :: * -> *) a.
HasRqData m =>
(RqEnv -> RqEnv) -> m a -> m a
localRqEnv RqEnv -> RqEnv
f m a
m)
rqDataError :: forall a. Errors String -> HSPT xml m a
rqDataError = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. HasRqData m => Errors String -> m a
rqDataError
instance (Alternative m, MonadPlus m, Functor m, MonadIO m, ServerMonad m, FilterMonad a m, WebMonad a m, HasRqData m, a ~ Response) => Happstack (HSPT xml m)