@@ -23,6 +23,7 @@ module Hakyll.Core.Rules
2323 , compile
2424 , create
2525 , route
26+ , resources
2627 , metaCompile
2728 , metaCompileWith
2829 ) where
@@ -72,8 +73,8 @@ tellCompilers compilers = RulesM $ do
7273--
7374tellResources :: [Resource]
7475 -> Rules
75−tellResources resources = RulesM $ tell $
76− RuleSet mempty mempty $ S.fromList resources
76+tellResources resources' = RulesM $ tell $
77+ RuleSet mempty mempty $ S.fromList resources'
7778
7879-- | Only compile/route items satisfying the given predicate
7980--
@@ -128,14 +129,11 @@ group g = RulesM . local setGroup' . unRulesM
128129--
129130compile :: (Binary a, Typeable a, Writable a)
130131 => Compiler Resource a -> Rules
131−compile compiler = RulesM $ do
132− pattern <- rulesPattern <$> ask
133− provider <- rulesResourceProvider <$> ask
134− let ids = filterMatches pattern $ map toIdentifier $ resourceList provider
135− unRulesM $ do
136− tellCompilers $ flip map ids $ \identifier ->
137− (identifier, constA (fromIdentifier identifier) >>> compiler)
138− tellResources $ map fromIdentifier ids
132+compile compiler = do
133+ ids <- resources
134+ tellCompilers $ flip map ids $ \identifier ->
135+ (identifier, constA (fromIdentifier identifier) >>> compiler)
136+ tellResources $ map fromIdentifier ids
139137
140138-- | Add a compilation rule
141139--
@@ -160,6 +158,14 @@ route route' = RulesM $ do
160158 group' <- rulesGroup <$> ask
161159 unRulesM $ tellRoute $ matchRoute (pattern `mappend` inGroup group') route'
162160
161+-- | Get a list of resources matching the current pattern
162+--
163+resources :: RulesM [Identifier]
164+resources = RulesM $ do
165+ pattern <- rulesPattern <$> ask
166+ provider <- rulesResourceProvider <$> ask
167+ return $ filterMatches pattern $ map toIdentifier $ resourceList provider
168+
163169-- | Apart from regular compilers, one is also able to specify metacompilers.
164170-- Metacompilers are a special class of compilers: they are compilers which
165171-- produce other compilers.