mkYesodSubData, mkYesodSubDispatch
This commit is contained in:
parent
d15368065f
commit
a7eae5413e
@ -10,7 +10,9 @@ module Yesod.Dispatch
|
|||||||
, mkYesodSub
|
, mkYesodSub
|
||||||
-- ** More fine-grained
|
-- ** More fine-grained
|
||||||
, mkYesodData
|
, mkYesodData
|
||||||
|
, mkYesodSubData
|
||||||
, mkYesodDispatch
|
, mkYesodDispatch
|
||||||
|
, mkYesodSubDispatch
|
||||||
-- ** Path pieces
|
-- ** Path pieces
|
||||||
, SinglePiece (..)
|
, SinglePiece (..)
|
||||||
, MultiPiece (..)
|
, MultiPiece (..)
|
||||||
@ -112,8 +114,15 @@ mkYesodSub name clazzes =
|
|||||||
-- monolithic file into smaller parts. Use this function, paired with
|
-- monolithic file into smaller parts. Use this function, paired with
|
||||||
-- 'mkYesodDispatch', to do just that.
|
-- 'mkYesodDispatch', to do just that.
|
||||||
mkYesodData :: String -> [Resource] -> Q [Dec]
|
mkYesodData :: String -> [Resource] -> Q [Dec]
|
||||||
mkYesodData name res = do
|
mkYesodData name res = mkYesodDataGeneral name [] False res
|
||||||
(x, _) <- mkYesodGeneral name [] [] False res
|
|
||||||
|
mkYesodSubData :: String -> Cxt -> [Resource] -> Q [Dec]
|
||||||
|
mkYesodSubData name clazzes res = mkYesodDataGeneral name clazzes True res
|
||||||
|
|
||||||
|
mkYesodDataGeneral :: String -> Cxt -> Bool -> [Resource] -> Q [Dec]
|
||||||
|
mkYesodDataGeneral name clazzes isSub res = do
|
||||||
|
let (name':rest) = words name
|
||||||
|
(x, _) <- mkYesodGeneral name' rest clazzes isSub res
|
||||||
let rname = mkName $ "resources" ++ name
|
let rname = mkName $ "resources" ++ name
|
||||||
eres <- lift res
|
eres <- lift res
|
||||||
let y = [ SigD rname $ ListT `AppT` ConT ''Resource
|
let y = [ SigD rname $ ListT `AppT` ConT ''Resource
|
||||||
@ -125,6 +134,10 @@ mkYesodData name res = do
|
|||||||
mkYesodDispatch :: String -> [Resource] -> Q [Dec]
|
mkYesodDispatch :: String -> [Resource] -> Q [Dec]
|
||||||
mkYesodDispatch name = fmap snd . mkYesodGeneral name [] [] False
|
mkYesodDispatch name = fmap snd . mkYesodGeneral name [] [] False
|
||||||
|
|
||||||
|
mkYesodSubDispatch :: String -> Cxt -> [Resource] -> Q [Dec]
|
||||||
|
mkYesodSubDispatch name clazzes = fmap snd . mkYesodGeneral name' rest clazzes True
|
||||||
|
where (name':rest) = words name
|
||||||
|
|
||||||
mkYesodGeneral :: String -- ^ argument name
|
mkYesodGeneral :: String -- ^ argument name
|
||||||
-> [String] -- ^ parameters for site argument
|
-> [String] -- ^ parameters for site argument
|
||||||
-> Cxt -- ^ classes
|
-> Cxt -- ^ classes
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user