@@ -23,6 +23,7 @@ module Hakyll.Core.Rules
26 , metaCompile
27 , metaCompile
27 , metaCompileWith
28 , metaCompileWith
@@ -72,8 +73,8 @@ tellCompilers compilers = RulesM $ do
73tellResources :: [Resource]
74tellResources :: [Resource]
75−tellResources resources = RulesM $ tell $
76+tellResources resources' = RulesM $ tell $
76− RuleSet mempty mempty $ S.fromList resources
77+ RuleSet mempty mempty $ S.fromList resources'
78-- | Only compile/route items satisfying the given predicate
79-- | Only compile/route items satisfying the given predicate
@@ -128,14 +129,11 @@ group g = RulesM . local setGroup' . unRulesM
129compile :: (Binary a, Typeable a, Writable a)
130compile :: (Binary a, Typeable a, Writable a)
130 => Compiler Resource a -> Rules
131 => Compiler Resource a -> Rules
131−compile compiler = RulesM $ do
132+compile compiler = do
132− pattern <- rulesPattern <$> ask
133+ ids <- resources
133− provider <- rulesResourceProvider <$> ask
134− let ids = filterMatches pattern $ map toIdentifier $ resourceList provider
136− tellCompilers $ flip map ids $ \identifier ->
134+ tellCompilers $ flip map ids $ \identifier ->
137− (identifier, constA (fromIdentifier identifier) >>> compiler)
135+ (identifier, constA (fromIdentifier identifier) >>> compiler)
138− tellResources $ map fromIdentifier ids
136+ tellResources $ map fromIdentifier ids
140-- | Add a compilation rule
138-- | Add a compilation rule
@@ -160,6 +158,14 @@ route route' = RulesM $ do
160 group' <- rulesGroup <$> ask
158 group' <- rulesGroup <$> ask
161 unRulesM $ tellRoute $ matchRoute (pattern `mappend` inGroup group') route'
159 unRulesM $ tellRoute $ matchRoute (pattern `mappend` inGroup group') route'
161+-- | Get a list of resources matching the current pattern
163+resources :: RulesM [Identifier]
164+resources = RulesM $ do
165+ pattern <- rulesPattern <$> ask
166+ provider <- rulesResourceProvider <$> ask
167+ return $ filterMatches pattern $ map toIdentifier $ resourceList provider
163-- | Apart from regular compilers, one is also able to specify metacompilers.
169-- | Apart from regular compilers, one is also able to specify metacompilers.
164-- Metacompilers are a special class of compilers: they are compilers which
170-- Metacompilers are a special class of compilers: they are compilers which
165-- produce other compilers.
171-- produce other compilers.