Add resources function to rules DSL

This commit is contained in:
Jasper Van der Jeugt 2011-04-14 10:17:08 +02:00
parent 1dbe8945eb
commit 5327e88160

View file

@ -23,6 +23,7 @@ module Hakyll.Core.Rules
, compile
, create
, route
, resources
, metaCompile
, metaCompileWith
) where
@ -72,8 +73,8 @@ tellCompilers compilers = RulesM $ do
--
tellResources :: [Resource]
-> Rules
tellResources resources = RulesM $ tell $
RuleSet mempty mempty $ S.fromList resources
tellResources resources' = RulesM $ tell $
RuleSet mempty mempty $ S.fromList resources'
-- | Only compile/route items satisfying the given predicate
--
@ -128,11 +129,8 @@ group g = RulesM . local setGroup' . unRulesM
--
compile :: (Binary a, Typeable a, Writable a)
=> Compiler Resource a -> Rules
compile compiler = RulesM $ do
pattern <- rulesPattern <$> ask
provider <- rulesResourceProvider <$> ask
let ids = filterMatches pattern $ map toIdentifier $ resourceList provider
unRulesM $ do
compile compiler = do
ids <- resources
tellCompilers $ flip map ids $ \identifier ->
(identifier, constA (fromIdentifier identifier) >>> compiler)
tellResources $ map fromIdentifier ids
@ -160,6 +158,14 @@ route route' = RulesM $ do
group' <- rulesGroup <$> ask
unRulesM $ tellRoute $ matchRoute (pattern `mappend` inGroup group') route'
-- | Get a list of resources matching the current pattern
--
resources :: RulesM [Identifier]
resources = RulesM $ do
pattern <- rulesPattern <$> ask
provider <- rulesResourceProvider <$> ask
return $ filterMatches pattern $ map toIdentifier $ resourceList provider
-- | Apart from regular compilers, one is also able to specify metacompilers.
-- Metacompilers are a special class of compilers: they are compilers which
-- produce other compilers.