@@ -2,6 +2,8 @@
2module Hakyll.Core.Metadata
2module Hakyll.Core.Metadata
4 , MonadMetadata (..)
4 , MonadMetadata (..)
5 , makePatternDependency
7 , makePatternDependency
@@ -9,6 +11,7 @@ module Hakyll.Core.Metadata
9--------------------------------------------------------------------------------
11--------------------------------------------------------------------------------
10import Control.Monad (forM)
12import Control.Monad (forM)
11import Data.Map (Map)
13import Data.Map (Map)
14+import qualified Data.Map as M
14--------------------------------------------------------------------------------
17--------------------------------------------------------------------------------
@@ -34,6 +37,25 @@ class Monad m => MonadMetadata m where
34 return (id', metadata)
37 return (id', metadata)
40+--------------------------------------------------------------------------------
41+getMetadataField :: MonadMetadata m => Identifier -> String -> m (Maybe String)
42+getMetadataField identifier key = do
43+ metadata <- getMetadata identifier
44+ return $ M.lookup key metadata
47+--------------------------------------------------------------------------------
48+-- | Version of 'getMetadataField' which throws an error if the field does not
50+getMetadataField' :: MonadMetadata m => Identifier -> String -> m String
51+getMetadataField' identifier key = do
52+ field <- getMetadataField identifier key
55+ Nothing -> fail $ "Hakyll.Core.Metadata.getMetadataField': " ++
56+ "Item " ++ show identifier ++ " has no metadata field " ++ show key
37--------------------------------------------------------------------------------
59--------------------------------------------------------------------------------
38makePatternDependency :: MonadMetadata m => Pattern -> m Dependency
60makePatternDependency :: MonadMetadata m => Pattern -> m Dependency
39makePatternDependency pattern = do
61makePatternDependency pattern = do