Merge pull request #286 from piyush-kurur/master

mkRenderRouteInstance with context
This commit is contained in:
Greg Weber 2012-03-10 22:20:15 -08:00
commit 6baedfecea

View File

@ -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
] ]