From 9c26f86f9115b1e65d0558e1c9861fb2633b74a9 Mon Sep 17 00:00:00 2001 From: Piyush P Kurur Date: Fri, 9 Mar 2012 15:32:40 +0530 Subject: [PATCH] added mkRenderRouteInstance' a more general version of mkRenderRouteInstance --- yesod-routes/Yesod/Routes/TH/RenderRoute.hs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/yesod-routes/Yesod/Routes/TH/RenderRoute.hs b/yesod-routes/Yesod/Routes/TH/RenderRoute.hs index 097cd8d7..bc331ed4 100644 --- a/yesod-routes/Yesod/Routes/TH/RenderRoute.hs +++ b/yesod-routes/Yesod/Routes/TH/RenderRoute.hs @@ -2,6 +2,7 @@ module Yesod.Routes.TH.RenderRoute ( -- ** RenderRoute mkRenderRouteInstance + , mkRenderRouteInstance' , mkRouteCons , mkRenderRouteClauses ) where @@ -89,12 +90,19 @@ mkRenderRouteClauses = -- | Generate the 'RenderRoute' instance. -- --- This includes both the 'Route' associated type and the 'renderRoute' method. --- This function uses both 'mkRouteCons' and 'mkRenderRouteClasses'. +-- This includes both the 'Route' associated type and the +-- 'renderRoute' method. This function uses both 'mkRouteCons' and +-- 'mkRenderRouteClasses'. 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 - return $ InstanceD [] (ConT ''RenderRoute `AppT` typ) + return $ InstanceD cxt (ConT ''RenderRoute `AppT` typ) [ DataInstD [] ''Route [typ] (mkRouteCons ress) clazzes , FunD (mkName "renderRoute") cls ]