on master help sign in
Add makePatternDependency
9bd35cdJasper Van der Jeugt
src/Hakyll/Core/Metadata.hs+9
@@ -2,6 +2,7 @@
2module Hakyll.Core.Metadata
2module Hakyll.Core.Metadata
3 ( Metadata
3 ( Metadata
4 , MonadMetadata (..)
4 , MonadMetadata (..)
5+ , makePatternDependency
5 ) where
6 ) where
6
7
7
8
@@ -11,6 +12,7 @@ import Data.Map (Map)
11
12
12
13
13--------------------------------------------------------------------------------
14--------------------------------------------------------------------------------
15+import Hakyll.Core.Dependencies
14import Hakyll.Core.Identifier
16import Hakyll.Core.Identifier
15import Hakyll.Core.Identifier.Pattern
17import Hakyll.Core.Identifier.Pattern
16
18
@@ -30,3 +32,10 @@ class Monad m => MonadMetadata m where
30 forM matches' $ \id' -> do
32 forM matches' $ \id' -> do
31 metadata <- getMetadata id'
33 metadata <- getMetadata id'
32 return (id', metadata)
34 return (id', metadata)
35+
36+
37+--------------------------------------------------------------------------------
38+makePatternDependency :: MonadMetadata m => Pattern -> m Dependency
39+makePatternDependency pattern = do
40+ matches' <- getMatches pattern
41+ return $ PatternDependency pattern matches'
src/Hakyll/Core/Rules.hs+2
@@ -171,6 +171,8 @@ preprocess = Rules . liftIO
171-- | Advanced usage: add extra dependencies to compilers. Basically this is
171-- | Advanced usage: add extra dependencies to compilers. Basically this is
172-- needed when you're doing unsafe tricky stuff in the rules monad, but you
172-- needed when you're doing unsafe tricky stuff in the rules monad, but you
173-- still want correct builds.
173-- still want correct builds.
174+--
175+-- A useful utility for this purpose is 'makePatternDependency'.
174rulesExtraDependencies :: [Dependency] -> Rules a -> Rules a
176rulesExtraDependencies :: [Dependency] -> Rules a -> Rules a
175rulesExtraDependencies deps = Rules . censor addDependencies . unRules
177rulesExtraDependencies deps = Rules . censor addDependencies . unRules
176 where
178 where