From b61877bdaaef8dd6ea8ffc406a2e60d7b104d0aa Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Fri, 3 Jan 2014 16:40:15 +0100 Subject: Fix issue with metadataRoute for composed routes --- src/Hakyll/Core/Routes.hs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Hakyll/Core/Routes.hs b/src/Hakyll/Core/Routes.hs index 34a613d..470d727 100644 --- a/src/Hakyll/Core/Routes.hs +++ b/src/Hakyll/Core/Routes.hs @@ -60,10 +60,17 @@ import Hakyll.Core.Util.String type UsedMetadata = Bool +-------------------------------------------------------------------------------- +data RoutesRead = RoutesRead + { routesProvider :: Provider + , routesUnderlying :: Identifier + } + + -------------------------------------------------------------------------------- -- | Type used for a route newtype Routes = Routes - { unRoutes :: Provider -> Identifier -> IO (Maybe FilePath, UsedMetadata) + { unRoutes :: RoutesRead -> Identifier -> IO (Maybe FilePath, UsedMetadata) } @@ -81,7 +88,8 @@ instance Monoid Routes where -- | Apply a route to an identifier runRoutes :: Routes -> Provider -> Identifier -> IO (Maybe FilePath, UsedMetadata) -runRoutes = unRoutes +runRoutes routes provider identifier = + unRoutes routes (RoutesRead provider identifier) identifier -------------------------------------------------------------------------------- @@ -156,9 +164,9 @@ gsubRoute pattern replacement = customRoute $ -------------------------------------------------------------------------------- -- | Get access to the metadata in order to determine the route metadataRoute :: (Metadata -> Routes) -> Routes -metadataRoute f = Routes $ \p i -> do - metadata <- resourceMetadata p i - unRoutes (f metadata) p i +metadataRoute f = Routes $ \r i -> do + metadata <- resourceMetadata (routesProvider r) (routesUnderlying r) + unRoutes (f metadata) r i -------------------------------------------------------------------------------- -- cgit v1.2.3