commit
ea182bb464
@ -16,9 +16,6 @@ import Yesod.Core.Types
|
|||||||
import Control.Monad.Logger (MonadLogger)
|
import Control.Monad.Logger (MonadLogger)
|
||||||
import Control.Monad.Trans.Resource (MonadResource)
|
import Control.Monad.Trans.Resource (MonadResource)
|
||||||
import Control.Monad.Trans.Class (lift)
|
import Control.Monad.Trans.Class (lift)
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Data.Monoid (Monoid)
|
|
||||||
#endif
|
|
||||||
import Data.Conduit.Internal (Pipe, ConduitM)
|
import Data.Conduit.Internal (Pipe, ConduitM)
|
||||||
|
|
||||||
import Control.Monad.Trans.Identity ( IdentityT)
|
import Control.Monad.Trans.Identity ( IdentityT)
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE QuasiQuotes #-}
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
{-# LANGUAGE CPP #-}
|
|
||||||
module Yesod.Core.Class.Yesod where
|
module Yesod.Core.Class.Yesod where
|
||||||
|
|
||||||
import Yesod.Core.Content
|
import Yesod.Core.Content
|
||||||
@ -14,9 +13,6 @@ import Data.ByteString.Builder (Builder)
|
|||||||
import Data.Text.Encoding (encodeUtf8Builder)
|
import Data.Text.Encoding (encodeUtf8Builder)
|
||||||
import Control.Arrow ((***), second)
|
import Control.Arrow ((***), second)
|
||||||
import Control.Exception (bracket)
|
import Control.Exception (bracket)
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
#endif
|
|
||||||
import Control.Monad (forM, when, void)
|
import Control.Monad (forM, when, void)
|
||||||
import Control.Monad.IO.Class (MonadIO (liftIO))
|
import Control.Monad.IO.Class (MonadIO (liftIO))
|
||||||
import Control.Monad.Logger (LogLevel (LevelInfo, LevelOther),
|
import Control.Monad.Logger (LogLevel (LevelInfo, LevelOther),
|
||||||
|
|||||||
@ -4,7 +4,6 @@
|
|||||||
{-# LANGUAGE TypeSynonymInstances #-}
|
{-# LANGUAGE TypeSynonymInstances #-}
|
||||||
{-# LANGUAGE Rank2Types #-}
|
{-# LANGUAGE Rank2Types #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE CPP #-}
|
|
||||||
module Yesod.Core.Content
|
module Yesod.Core.Content
|
||||||
( -- * Content
|
( -- * Content
|
||||||
Content (..)
|
Content (..)
|
||||||
@ -56,9 +55,6 @@ import qualified Data.Text as T
|
|||||||
import Data.Text.Encoding (encodeUtf8Builder)
|
import Data.Text.Encoding (encodeUtf8Builder)
|
||||||
import qualified Data.Text.Lazy as TL
|
import qualified Data.Text.Lazy as TL
|
||||||
import Data.ByteString.Builder (Builder, byteString, lazyByteString, stringUtf8)
|
import Data.ByteString.Builder (Builder, byteString, lazyByteString, stringUtf8)
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Data.Monoid (mempty)
|
|
||||||
#endif
|
|
||||||
import Text.Hamlet (Html)
|
import Text.Hamlet (Html)
|
||||||
import Text.Blaze.Html.Renderer.Utf8 (renderHtmlBuilder)
|
import Text.Blaze.Html.Renderer.Utf8 (renderHtmlBuilder)
|
||||||
import Data.Conduit (Flush (Chunk), SealedConduitT, mapOutput)
|
import Data.Conduit (Flush (Chunk), SealedConduitT, mapOutput)
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
{-# LANGUAGE FlexibleInstances #-}
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
{-# LANGUAGE CPP #-}
|
|
||||||
module Yesod.Core.Dispatch
|
module Yesod.Core.Dispatch
|
||||||
( -- * Quasi-quoted routing
|
( -- * Quasi-quoted routing
|
||||||
parseRoutes
|
parseRoutes
|
||||||
@ -48,9 +47,6 @@ import qualified Network.Wai as W
|
|||||||
import Data.ByteString.Lazy.Char8 ()
|
import Data.ByteString.Lazy.Char8 ()
|
||||||
|
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Data.Monoid (mappend)
|
|
||||||
#endif
|
|
||||||
import qualified Data.ByteString as S
|
import qualified Data.ByteString as S
|
||||||
import qualified Data.ByteString.Lazy as BL
|
import qualified Data.ByteString.Lazy as BL
|
||||||
import qualified Data.ByteString.Char8 as S8
|
import qualified Data.ByteString.Char8 as S8
|
||||||
@ -61,7 +57,7 @@ import Yesod.Core.Types
|
|||||||
import Yesod.Core.Class.Yesod
|
import Yesod.Core.Class.Yesod
|
||||||
import Yesod.Core.Class.Dispatch
|
import Yesod.Core.Class.Dispatch
|
||||||
import Yesod.Core.Internal.Run
|
import Yesod.Core.Internal.Run
|
||||||
import Safe (readMay)
|
import Text.Read (readMaybe)
|
||||||
import System.Environment (getEnvironment)
|
import System.Environment (getEnvironment)
|
||||||
import qualified System.Random as Random
|
import qualified System.Random as Random
|
||||||
import Control.AutoUpdate (mkAutoUpdate, defaultUpdateSettings, updateAction, updateFreq)
|
import Control.AutoUpdate (mkAutoUpdate, defaultUpdateSettings, updateAction, updateFreq)
|
||||||
@ -243,7 +239,7 @@ warpEnv site = do
|
|||||||
case lookup "PORT" env of
|
case lookup "PORT" env of
|
||||||
Nothing -> error "warpEnv: no PORT environment variable found"
|
Nothing -> error "warpEnv: no PORT environment variable found"
|
||||||
Just portS ->
|
Just portS ->
|
||||||
case readMay portS of
|
case readMaybe portS of
|
||||||
Nothing -> error $ "warpEnv: invalid PORT environment variable: " ++ show portS
|
Nothing -> error $ "warpEnv: invalid PORT environment variable: " ++ show portS
|
||||||
Just port -> warp port site
|
Just port -> warp port site
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
{-# LANGUAGE CPP #-}
|
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
{-# LANGUAGE ConstraintKinds #-}
|
{-# LANGUAGE ConstraintKinds #-}
|
||||||
{-# LANGUAGE FlexibleInstances #-}
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
@ -195,10 +194,6 @@ import Yesod.Core.Internal.Request (langKey, mkFileInfoFile,
|
|||||||
mkFileInfoLBS, mkFileInfoSource)
|
mkFileInfoLBS, mkFileInfoSource)
|
||||||
|
|
||||||
|
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
import Data.Monoid (mempty, mappend)
|
|
||||||
#endif
|
|
||||||
import Control.Applicative ((<|>))
|
import Control.Applicative ((<|>))
|
||||||
import qualified Data.CaseInsensitive as CI
|
import qualified Data.CaseInsensitive as CI
|
||||||
import Control.Exception (evaluate, SomeException, throwIO)
|
import Control.Exception (evaluate, SomeException, throwIO)
|
||||||
@ -249,7 +244,6 @@ import Yesod.Core.Class.Handler
|
|||||||
import Yesod.Core.Types
|
import Yesod.Core.Types
|
||||||
import Yesod.Routes.Class (Route)
|
import Yesod.Routes.Class (Route)
|
||||||
import Data.ByteString.Builder (Builder)
|
import Data.ByteString.Builder (Builder)
|
||||||
import Safe (headMay)
|
|
||||||
import Data.CaseInsensitive (CI, original)
|
import Data.CaseInsensitive (CI, original)
|
||||||
import qualified Data.Conduit.List as CL
|
import qualified Data.Conduit.List as CL
|
||||||
import Control.Monad.Trans.Resource (MonadResource, InternalState, runResourceT, withInternalState, getInternalState, liftResourceT, resourceForkIO)
|
import Control.Monad.Trans.Resource (MonadResource, InternalState, runResourceT, withInternalState, getInternalState, liftResourceT, resourceForkIO)
|
||||||
@ -606,7 +600,7 @@ setMessageI = addMessageI ""
|
|||||||
-- | Gets just the last message in the user's session,
|
-- | Gets just the last message in the user's session,
|
||||||
-- discards the rest and the status
|
-- discards the rest and the status
|
||||||
getMessage :: MonadHandler m => m (Maybe Html)
|
getMessage :: MonadHandler m => m (Maybe Html)
|
||||||
getMessage = fmap (fmap snd . headMay) getMessages
|
getMessage = fmap (fmap snd . listToMaybe) getMessages
|
||||||
|
|
||||||
-- | Bypass remaining handler code and output the given file.
|
-- | Bypass remaining handler code and output the given file.
|
||||||
--
|
--
|
||||||
@ -1322,7 +1316,7 @@ selectRep w = do
|
|||||||
tryAccept ct =
|
tryAccept ct =
|
||||||
if subType == "*"
|
if subType == "*"
|
||||||
then if mainType == "*"
|
then if mainType == "*"
|
||||||
then headMay reps
|
then listToMaybe reps
|
||||||
else Map.lookup mainType mainTypeMap
|
else Map.lookup mainType mainTypeMap
|
||||||
else lookupAccept ct
|
else lookupAccept ct
|
||||||
where
|
where
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
{-# LANGUAGE TypeFamilies, PatternGuards, CPP #-}
|
{-# LANGUAGE TypeFamilies, PatternGuards, CPP #-}
|
||||||
module Yesod.Core.Internal.LiteApp where
|
module Yesod.Core.Internal.LiteApp where
|
||||||
|
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Data.Monoid
|
|
||||||
#endif
|
|
||||||
#if !(MIN_VERSION_base(4,11,0))
|
#if !(MIN_VERSION_base(4,11,0))
|
||||||
import Data.Semigroup (Semigroup(..))
|
import Data.Semigroup (Semigroup(..))
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
{-# LANGUAGE CPP #-}
|
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE PatternGuards #-}
|
{-# LANGUAGE PatternGuards #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
@ -9,10 +8,6 @@
|
|||||||
module Yesod.Core.Internal.Run where
|
module Yesod.Core.Internal.Run where
|
||||||
|
|
||||||
|
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Data.Monoid (Monoid, mempty)
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
#endif
|
|
||||||
import Yesod.Core.Internal.Response
|
import Yesod.Core.Internal.Response
|
||||||
import Data.ByteString.Builder (toLazyByteString)
|
import Data.ByteString.Builder (toLazyByteString)
|
||||||
import qualified Data.ByteString.Lazy as BL
|
import qualified Data.ByteString.Lazy as BL
|
||||||
@ -287,10 +282,8 @@ runFakeHandler fakeSessionMap logger site handler = liftIO $ do
|
|||||||
, vault = mempty
|
, vault = mempty
|
||||||
, requestBodyLength = KnownLength 0
|
, requestBodyLength = KnownLength 0
|
||||||
, requestHeaderRange = Nothing
|
, requestHeaderRange = Nothing
|
||||||
#if MIN_VERSION_wai(3,2,0)
|
|
||||||
, requestHeaderReferer = Nothing
|
, requestHeaderReferer = Nothing
|
||||||
, requestHeaderUserAgent = Nothing
|
, requestHeaderUserAgent = Nothing
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
fakeRequest =
|
fakeRequest =
|
||||||
YesodRequest
|
YesodRequest
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
{-# LANGUAGE FlexibleInstances #-}
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
{-# LANGUAGE CPP #-}
|
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
module Yesod.Core.Internal.TH where
|
module Yesod.Core.Internal.TH where
|
||||||
|
|
||||||
@ -17,9 +16,6 @@ import qualified Network.Wai as W
|
|||||||
|
|
||||||
import Data.ByteString.Lazy.Char8 ()
|
import Data.ByteString.Lazy.Char8 ()
|
||||||
import Data.List (foldl')
|
import Data.List (foldl')
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
#endif
|
|
||||||
import Control.Monad (replicateM, void)
|
import Control.Monad (replicateM, void)
|
||||||
import Text.Parsec (parse, many1, many, eof, try, option, sepBy1)
|
import Text.Parsec (parse, many1, many, eof, try, option, sepBy1)
|
||||||
import Text.ParserCombinators.Parsec.Char (alphaNum, spaces, string, char)
|
import Text.ParserCombinators.Parsec.Char (alphaNum, spaces, string, char)
|
||||||
@ -126,11 +122,7 @@ mkYesodGeneral :: [[String]] -- ^ Appliction context. Used in Ren
|
|||||||
-> Q([Dec],[Dec])
|
-> Q([Dec],[Dec])
|
||||||
mkYesodGeneral appCxt' namestr mtys isSub f resS = do
|
mkYesodGeneral appCxt' namestr mtys isSub f resS = do
|
||||||
let appCxt = fmap (\(c:rest) ->
|
let appCxt = fmap (\(c:rest) ->
|
||||||
#if MIN_VERSION_template_haskell(2,10,0)
|
|
||||||
foldl' (\acc v -> acc `AppT` nameToType v) (ConT $ mkName c) rest
|
foldl' (\acc v -> acc `AppT` nameToType v) (ConT $ mkName c) rest
|
||||||
#else
|
|
||||||
ClassP (mkName c) $ fmap nameToType rest
|
|
||||||
#endif
|
|
||||||
) appCxt'
|
) appCxt'
|
||||||
mname <- lookupTypeName namestr
|
mname <- lookupTypeName namestr
|
||||||
arity <- case mname of
|
arity <- case mname of
|
||||||
@ -140,13 +132,8 @@ mkYesodGeneral appCxt' namestr mtys isSub f resS = do
|
|||||||
case info of
|
case info of
|
||||||
TyConI dec ->
|
TyConI dec ->
|
||||||
case dec of
|
case dec of
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
DataD _ _ vs _ _ _ -> length vs
|
DataD _ _ vs _ _ _ -> length vs
|
||||||
NewtypeD _ _ vs _ _ _ -> length vs
|
NewtypeD _ _ vs _ _ _ -> length vs
|
||||||
#else
|
|
||||||
DataD _ _ vs _ _ -> length vs
|
|
||||||
NewtypeD _ _ vs _ _ -> length vs
|
|
||||||
#endif
|
|
||||||
TySynD _ vs _ -> length vs
|
TySynD _ vs _ -> length vs
|
||||||
_ -> 0
|
_ -> 0
|
||||||
_ -> 0
|
_ -> 0
|
||||||
@ -230,8 +217,4 @@ mkYesodSubDispatch res = do
|
|||||||
return $ LetE [fun] (VarE helper)
|
return $ LetE [fun] (VarE helper)
|
||||||
|
|
||||||
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
instanceD = InstanceD Nothing
|
instanceD = InstanceD Nothing
|
||||||
#else
|
|
||||||
instanceD = InstanceD
|
|
||||||
#endif
|
|
||||||
|
|||||||
@ -11,11 +11,6 @@
|
|||||||
module Yesod.Core.Types where
|
module Yesod.Core.Types where
|
||||||
|
|
||||||
import qualified Data.ByteString.Builder as BB
|
import qualified Data.ByteString.Builder as BB
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Control.Applicative (Applicative (..))
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
import Data.Monoid (Monoid (..))
|
|
||||||
#endif
|
|
||||||
import Control.Arrow (first)
|
import Control.Arrow (first)
|
||||||
import Control.Exception (Exception)
|
import Control.Exception (Exception)
|
||||||
import Control.Monad (ap)
|
import Control.Monad (ap)
|
||||||
@ -57,7 +52,6 @@ import Yesod.Core.Internal.Util (getTime, putTime)
|
|||||||
import Yesod.Routes.Class (RenderRoute (..), ParseRoute (..))
|
import Yesod.Routes.Class (RenderRoute (..), ParseRoute (..))
|
||||||
import Control.Monad.Reader (MonadReader (..))
|
import Control.Monad.Reader (MonadReader (..))
|
||||||
import Control.DeepSeq (NFData (rnf))
|
import Control.DeepSeq (NFData (rnf))
|
||||||
import Control.DeepSeq.Generics (genericRnf)
|
|
||||||
import Yesod.Core.TypeCache (TypeMap, KeyedTypeMap)
|
import Yesod.Core.TypeCache (TypeMap, KeyedTypeMap)
|
||||||
import Control.Monad.Logger (MonadLoggerIO (..))
|
import Control.Monad.Logger (MonadLoggerIO (..))
|
||||||
import UnliftIO (MonadUnliftIO (..), UnliftIO (..))
|
import UnliftIO (MonadUnliftIO (..), UnliftIO (..))
|
||||||
@ -323,8 +317,7 @@ data ErrorResponse =
|
|||||||
| PermissionDenied !Text
|
| PermissionDenied !Text
|
||||||
| BadMethod !H.Method
|
| BadMethod !H.Method
|
||||||
deriving (Show, Eq, Typeable, Generic)
|
deriving (Show, Eq, Typeable, Generic)
|
||||||
instance NFData ErrorResponse where
|
instance NFData ErrorResponse
|
||||||
rnf = genericRnf
|
|
||||||
|
|
||||||
----- header stuff
|
----- header stuff
|
||||||
-- | Headers to be added to a 'Result'.
|
-- | Headers to be added to a 'Result'.
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
{-# LANGUAGE CPP #-}
|
|
||||||
-- | This is designed to be used as
|
-- | This is designed to be used as
|
||||||
--
|
--
|
||||||
-- > import qualified Yesod.Core.Unsafe as Unsafe
|
-- > import qualified Yesod.Core.Unsafe as Unsafe
|
||||||
@ -10,9 +9,6 @@ import Yesod.Core.Internal.Run (runFakeHandler)
|
|||||||
|
|
||||||
import Yesod.Core.Types
|
import Yesod.Core.Types
|
||||||
import Yesod.Core.Class.Yesod
|
import Yesod.Core.Class.Yesod
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Data.Monoid (mempty, mappend)
|
|
||||||
#endif
|
|
||||||
import Control.Monad.IO.Class (MonadIO)
|
import Control.Monad.IO.Class (MonadIO)
|
||||||
|
|
||||||
-- | designed to be used as
|
-- | designed to be used as
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
{-# LANGUAGE TypeSynonymInstances #-}
|
{-# LANGUAGE TypeSynonymInstances #-}
|
||||||
{-# LANGUAGE UndecidableInstances #-}
|
{-# LANGUAGE UndecidableInstances #-}
|
||||||
{-# LANGUAGE CPP #-}
|
|
||||||
-- | Widgets combine HTML with JS and CSS dependencies with a unique identifier
|
-- | Widgets combine HTML with JS and CSS dependencies with a unique identifier
|
||||||
-- generator, allowing you to create truly modular HTML components.
|
-- generator, allowing you to create truly modular HTML components.
|
||||||
module Yesod.Core.Widget
|
module Yesod.Core.Widget
|
||||||
@ -57,9 +56,6 @@ import Text.Cassius
|
|||||||
import Text.Julius
|
import Text.Julius
|
||||||
import Yesod.Routes.Class
|
import Yesod.Routes.Class
|
||||||
import Yesod.Core.Handler (getMessageRender, getUrlRenderParams)
|
import Yesod.Core.Handler (getMessageRender, getUrlRenderParams)
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
#endif
|
|
||||||
import Text.Shakespeare.I18N (RenderMessage)
|
import Text.Shakespeare.I18N (RenderMessage)
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
{-# LANGUAGE CPP #-}
|
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module Yesod.Routes.TH.ParseRoute
|
module Yesod.Routes.TH.ParseRoute
|
||||||
( -- ** ParseRoute
|
( -- ** ParseRoute
|
||||||
@ -45,8 +44,4 @@ mkParseRouteInstance cxt typ ress = do
|
|||||||
fixDispatch x = x
|
fixDispatch x = x
|
||||||
|
|
||||||
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
instanceD = InstanceD Nothing
|
instanceD = InstanceD Nothing
|
||||||
#else
|
|
||||||
instanceD = InstanceD
|
|
||||||
#endif
|
|
||||||
|
|||||||
@ -7,22 +7,14 @@ module Yesod.Routes.TH.RenderRoute
|
|||||||
) where
|
) where
|
||||||
|
|
||||||
import Yesod.Routes.TH.Types
|
import Yesod.Routes.TH.Types
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
import Language.Haskell.TH (conT)
|
import Language.Haskell.TH (conT)
|
||||||
#endif
|
|
||||||
import Language.Haskell.TH.Syntax
|
import Language.Haskell.TH.Syntax
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
import Data.Bits (xor)
|
import Data.Bits (xor)
|
||||||
#endif
|
|
||||||
import Data.Maybe (maybeToList)
|
import Data.Maybe (maybeToList)
|
||||||
import Control.Monad (replicateM)
|
import Control.Monad (replicateM)
|
||||||
import Data.Text (pack)
|
import Data.Text (pack)
|
||||||
import Web.PathPieces (PathPiece (..), PathMultiPiece (..))
|
import Web.PathPieces (PathPiece (..), PathMultiPiece (..))
|
||||||
import Yesod.Routes.Class
|
import Yesod.Routes.Class
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
import Data.Monoid (mconcat)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-- | Generate the constructors of a route data type.
|
-- | Generate the constructors of a route data type.
|
||||||
mkRouteCons :: [ResourceTree Type] -> Q ([Con], [Dec])
|
mkRouteCons :: [ResourceTree Type] -> Q ([Con], [Dec])
|
||||||
@ -50,10 +42,8 @@ mkRouteCons rttypes =
|
|||||||
(cons, decs) <- mkRouteCons children
|
(cons, decs) <- mkRouteCons children
|
||||||
#if MIN_VERSION_template_haskell(2,12,0)
|
#if MIN_VERSION_template_haskell(2,12,0)
|
||||||
dec <- DataD [] (mkName name) [] Nothing cons <$> fmap (pure . DerivClause Nothing) (mapM conT [''Show, ''Read, ''Eq])
|
dec <- DataD [] (mkName name) [] Nothing cons <$> fmap (pure . DerivClause Nothing) (mapM conT [''Show, ''Read, ''Eq])
|
||||||
#elif MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
dec <- DataD [] (mkName name) [] Nothing cons <$> mapM conT [''Show, ''Read, ''Eq]
|
|
||||||
#else
|
#else
|
||||||
let dec = DataD [] (mkName name) [] cons [''Show, ''Read, ''Eq]
|
dec <- DataD [] (mkName name) [] Nothing cons <$> mapM conT [''Show, ''Read, ''Eq]
|
||||||
#endif
|
#endif
|
||||||
return ([con], dec : decs)
|
return ([con], dec : decs)
|
||||||
where
|
where
|
||||||
@ -154,12 +144,9 @@ mkRenderRouteInstance cxt typ ress = do
|
|||||||
#if MIN_VERSION_template_haskell(2,12,0)
|
#if MIN_VERSION_template_haskell(2,12,0)
|
||||||
did <- DataInstD [] ''Route [typ] Nothing cons <$> fmap (pure . DerivClause Nothing) (mapM conT (clazzes False))
|
did <- DataInstD [] ''Route [typ] Nothing cons <$> fmap (pure . DerivClause Nothing) (mapM conT (clazzes False))
|
||||||
let sds = fmap (\t -> StandaloneDerivD Nothing cxt $ ConT t `AppT` ( ConT ''Route `AppT` typ)) (clazzes True)
|
let sds = fmap (\t -> StandaloneDerivD Nothing cxt $ ConT t `AppT` ( ConT ''Route `AppT` typ)) (clazzes True)
|
||||||
#elif MIN_VERSION_template_haskell(2,11,0)
|
#else
|
||||||
did <- DataInstD [] ''Route [typ] Nothing cons <$> mapM conT (clazzes False)
|
did <- DataInstD [] ''Route [typ] Nothing cons <$> mapM conT (clazzes False)
|
||||||
let sds = fmap (\t -> StandaloneDerivD cxt $ ConT t `AppT` ( ConT ''Route `AppT` typ)) (clazzes True)
|
let sds = fmap (\t -> StandaloneDerivD cxt $ ConT t `AppT` ( ConT ''Route `AppT` typ)) (clazzes True)
|
||||||
#else
|
|
||||||
let did = DataInstD [] ''Route [typ] cons clazzes'
|
|
||||||
let sds = []
|
|
||||||
#endif
|
#endif
|
||||||
return $ instanceD cxt (ConT ''RenderRoute `AppT` typ)
|
return $ instanceD cxt (ConT ''RenderRoute `AppT` typ)
|
||||||
[ did
|
[ did
|
||||||
@ -167,25 +154,14 @@ mkRenderRouteInstance cxt typ ress = do
|
|||||||
]
|
]
|
||||||
: sds ++ decs
|
: sds ++ decs
|
||||||
where
|
where
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
clazzes standalone = if standalone `xor` null cxt then
|
clazzes standalone = if standalone `xor` null cxt then
|
||||||
clazzes'
|
clazzes'
|
||||||
else
|
else
|
||||||
[]
|
[]
|
||||||
#endif
|
|
||||||
clazzes' = [''Show, ''Eq, ''Read]
|
clazzes' = [''Show, ''Eq, ''Read]
|
||||||
|
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
notStrict :: Bang
|
notStrict :: Bang
|
||||||
notStrict = Bang NoSourceUnpackedness NoSourceStrictness
|
notStrict = Bang NoSourceUnpackedness NoSourceStrictness
|
||||||
#else
|
|
||||||
notStrict :: Strict
|
|
||||||
notStrict = NotStrict
|
|
||||||
#endif
|
|
||||||
|
|
||||||
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
instanceD = InstanceD Nothing
|
instanceD = InstanceD Nothing
|
||||||
#else
|
|
||||||
instanceD = InstanceD
|
|
||||||
#endif
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
{-# LANGUAGE CPP #-}
|
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module Yesod.Routes.TH.RouteAttrs
|
module Yesod.Routes.TH.RouteAttrs
|
||||||
@ -10,9 +9,6 @@ import Yesod.Routes.Class
|
|||||||
import Language.Haskell.TH.Syntax
|
import Language.Haskell.TH.Syntax
|
||||||
import Data.Set (fromList)
|
import Data.Set (fromList)
|
||||||
import Data.Text (pack)
|
import Data.Text (pack)
|
||||||
#if __GLASGOW_HASKELL__ < 710
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mkRouteAttrsInstance :: Cxt -> Type -> [ResourceTree a] -> Q Dec
|
mkRouteAttrsInstance :: Cxt -> Type -> [ResourceTree a] -> Q Dec
|
||||||
mkRouteAttrsInstance cxt typ ress = do
|
mkRouteAttrsInstance cxt typ ress = do
|
||||||
@ -42,8 +38,4 @@ goRes front Resource {..} =
|
|||||||
toText s = VarE 'pack `AppE` LitE (StringL s)
|
toText s = VarE 'pack `AppE` LitE (StringL s)
|
||||||
|
|
||||||
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
instanceD :: Cxt -> Type -> [Dec] -> Dec
|
||||||
#if MIN_VERSION_template_haskell(2,11,0)
|
|
||||||
instanceD = InstanceD Nothing
|
instanceD = InstanceD Nothing
|
||||||
#else
|
|
||||||
instanceD = InstanceD
|
|
||||||
#endif
|
|
||||||
|
|||||||
@ -36,7 +36,6 @@ library
|
|||||||
, containers >= 0.2
|
, containers >= 0.2
|
||||||
, cookie >= 0.4.3 && < 0.5
|
, cookie >= 0.4.3 && < 0.5
|
||||||
, deepseq >= 1.3
|
, deepseq >= 1.3
|
||||||
, deepseq-generics
|
|
||||||
, fast-logger >= 2.2
|
, fast-logger >= 2.2
|
||||||
, http-types >= 0.7
|
, http-types >= 0.7
|
||||||
, monad-logger >= 0.3.10 && < 0.4
|
, monad-logger >= 0.3.10 && < 0.4
|
||||||
@ -45,10 +44,9 @@ library
|
|||||||
, path-pieces >= 0.1.2 && < 0.3
|
, path-pieces >= 0.1.2 && < 0.3
|
||||||
, random >= 1.0.0.2 && < 1.2
|
, random >= 1.0.0.2 && < 1.2
|
||||||
, resourcet >= 1.2
|
, resourcet >= 1.2
|
||||||
, safe
|
, rio
|
||||||
, semigroups
|
|
||||||
, shakespeare >= 2.0
|
, shakespeare >= 2.0
|
||||||
, template-haskell
|
, template-haskell >= 2.11
|
||||||
, text >= 0.7
|
, text >= 0.7
|
||||||
, time >= 1.5
|
, time >= 1.5
|
||||||
, transformers >= 0.4
|
, transformers >= 0.4
|
||||||
@ -56,7 +54,7 @@ library
|
|||||||
, unliftio
|
, unliftio
|
||||||
, unordered-containers >= 0.2
|
, unordered-containers >= 0.2
|
||||||
, vector >= 0.9 && < 0.13
|
, vector >= 0.9 && < 0.13
|
||||||
, wai >= 3.0
|
, wai >= 3.2
|
||||||
, wai-extra >= 3.0.7
|
, wai-extra >= 3.0.7
|
||||||
, wai-logger >= 0.2
|
, wai-logger >= 0.2
|
||||||
, warp >= 3.0.2
|
, warp >= 3.0.2
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user