summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Hakyll/Core/Metadata.hs9
-rw-r--r--src/Hakyll/Core/Rules.hs2
2 files changed, 11 insertions, 0 deletions
diff --git a/src/Hakyll/Core/Metadata.hs b/src/Hakyll/Core/Metadata.hs
index 884acd3..9fc2d3e 100644
--- a/src/Hakyll/Core/Metadata.hs
+++ b/src/Hakyll/Core/Metadata.hs
@@ -2,6 +2,7 @@
module Hakyll.Core.Metadata
( Metadata
, MonadMetadata (..)
+ , makePatternDependency
) where
@@ -11,6 +12,7 @@ import Data.Map (Map)
--------------------------------------------------------------------------------
+import Hakyll.Core.Dependencies
import Hakyll.Core.Identifier
import Hakyll.Core.Identifier.Pattern
@@ -30,3 +32,10 @@ class Monad m => MonadMetadata m where
forM matches' $ \id' -> do
metadata <- getMetadata id'
return (id', metadata)
+
+
+--------------------------------------------------------------------------------
+makePatternDependency :: MonadMetadata m => Pattern -> m Dependency
+makePatternDependency pattern = do
+ matches' <- getMatches pattern
+ return $ PatternDependency pattern matches'
diff --git a/src/Hakyll/Core/Rules.hs b/src/Hakyll/Core/Rules.hs
index 8037ffb..66210b6 100644
--- a/src/Hakyll/Core/Rules.hs
+++ b/src/Hakyll/Core/Rules.hs
@@ -171,6 +171,8 @@ preprocess = Rules . liftIO
-- | Advanced usage: add extra dependencies to compilers. Basically this is
-- needed when you're doing unsafe tricky stuff in the rules monad, but you
-- still want correct builds.
+--
+-- A useful utility for this purpose is 'makePatternDependency'.
rulesExtraDependencies :: [Dependency] -> Rules a -> Rules a
rulesExtraDependencies deps = Rules . censor addDependencies . unRules
where