on master help sign in
Revert "Fix root directory in directory-wise metadata and beautify code"

This reverts commit a6ae4eb99dd5f9957adc3b5fe4011e69b9681e4c.

commitbc1cfc8d5a8baeb4bc21b992e310ee79fdb38c0f authorJasper Van der Jeugt <m@jaspervdj.be> dateWed 26 Mar 2014, 11:30 (13 years ago) parent6552dd5
1 file changed+20−14
src/Hakyll/Core/Provider/Metadata.hs+20−14
src/Hakyll/Core/Provider/Metadata.hs+20−14
@@ -142,20 +142,26 @@ page = do
142142--------------------------------------------------------------------------------
143143-- | Load directory-wise metadata
144144loadGlobalMetadata :: Provider -> FilePath -> IO (M.Map String String)
145−loadGlobalMetadata p fp = liftM M.fromList $ loadgm $ takeDirectory fp where
146− loadgm :: FilePath -> IO [(String, String)]
147− loadgm dir | dir == "." = return []
148− | otherwise = do
149− let mfp = fromFilePath $ combine dir "metadata"
150− md <- if resourceExists p mfp then loadOne mfp dir else return []
151− others <- loadgm (takeDirectory dir)
152− return $ others ++ md
153− loadOne mfp dir =
154− let path = resourceFilePath p mfp
155− -- TODO: It might be better to print warning and continue
156− in either (error.show) (findMetadata dir) . P.parse namedMetadata path <$> readFile path
157− findMetadata dir =
158− concatMap snd . filter (flip matches (fromFilePath fp) . fromGlob . combine dir . fst)
145+loadGlobalMetadata p fp = do
146+ let dir = takeDirectory fp
147+ liftM M.fromList $ loadgm dir
148+ where
149+ loadgm :: FilePath -> IO [(String, String)]
150+ loadgm dir | dir == providerDirectory p = return []
151+ | otherwise = do
152+ let mfp = combine dir "metadata"
153+ md <- if M.member (fromFilePath mfp) (providerFiles p)
154+ then loadOne mfp dir
155+ else return []
156+ others <- loadgm (takeDirectory dir)
157+ return $ others ++ md
158+ loadOne mfp dir = do
159+ contents <- IO.readFile $ resourceFilePath p $ fromFilePath mfp
160+ return $ case P.parse namedMetadata mfp contents of
161+ Left err -> error (show err)
162+ Right mds -> findMetadata mds dir
163+ findMetadata mds dir =
164+ concatMap snd $ filter (flip matches (fromFilePath fp) . fromGlob . combine dir . fst) mds
159165
160166namedMetadata :: Parser [(String, [(String, String)])]
161167namedMetadata = liftA2 (:) (namedMetadataBlock False) $ P.many $ namedMetadataBlock True