Merge pull request #286 from piyush-kurur/master
mkRenderRouteInstance with context
This commit is contained in:
commit
6baedfecea
@ -2,6 +2,7 @@
|
|||||||
module Yesod.Routes.TH.RenderRoute
|
module Yesod.Routes.TH.RenderRoute
|
||||||
( -- ** RenderRoute
|
( -- ** RenderRoute
|
||||||
mkRenderRouteInstance
|
mkRenderRouteInstance
|
||||||
|
, mkRenderRouteInstance'
|
||||||
, mkRouteCons
|
, mkRouteCons
|
||||||
, mkRenderRouteClauses
|
, mkRenderRouteClauses
|
||||||
) where
|
) where
|
||||||
@ -89,12 +90,19 @@ mkRenderRouteClauses =
|
|||||||
|
|
||||||
-- | Generate the 'RenderRoute' instance.
|
-- | Generate the 'RenderRoute' instance.
|
||||||
--
|
--
|
||||||
-- This includes both the 'Route' associated type and the 'renderRoute' method.
|
-- This includes both the 'Route' associated type and the
|
||||||
-- This function uses both 'mkRouteCons' and 'mkRenderRouteClasses'.
|
-- 'renderRoute' method. This function uses both 'mkRouteCons' and
|
||||||
|
-- 'mkRenderRouteClasses'.
|
||||||
mkRenderRouteInstance :: Type -> [Resource Type] -> Q Dec
|
mkRenderRouteInstance :: Type -> [Resource Type] -> Q Dec
|
||||||
mkRenderRouteInstance typ ress = do
|
mkRenderRouteInstance = mkRenderRouteInstance' []
|
||||||
|
|
||||||
|
-- | A more general version of 'mkRenderRouteInstance' which takes an
|
||||||
|
-- additional context.
|
||||||
|
|
||||||
|
mkRenderRouteInstance' :: Cxt -> Type -> [Resource Type] -> Q Dec
|
||||||
|
mkRenderRouteInstance' cxt typ ress = do
|
||||||
cls <- mkRenderRouteClauses ress
|
cls <- mkRenderRouteClauses ress
|
||||||
return $ InstanceD [] (ConT ''RenderRoute `AppT` typ)
|
return $ InstanceD cxt (ConT ''RenderRoute `AppT` typ)
|
||||||
[ DataInstD [] ''Route [typ] (mkRouteCons ress) clazzes
|
[ DataInstD [] ''Route [typ] (mkRouteCons ress) clazzes
|
||||||
, FunD (mkName "renderRoute") cls
|
, FunD (mkName "renderRoute") cls
|
||||||
]
|
]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user