summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper Van der Jeugt <jaspervdj@gmail.com>2011-04-14 10:17:08 +0200
committerJasper Van der Jeugt <jaspervdj@gmail.com>2011-04-14 10:17:08 +0200
commit5327e881609c882df17c82723d452950658b9e8f (patch)
tree525c007e0e210ed0f26757a4ee950c6bbef11b19
parent1dbe8945eb018d7773a4efdbb008f92c779e5555 (diff)
downloadhakyll-5327e881609c882df17c82723d452950658b9e8f.tar.gz
Add `resources` function to rules DSL
-rw-r--r--src/Hakyll/Core/Rules.hs26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/Hakyll/Core/Rules.hs b/src/Hakyll/Core/Rules.hs
index 155e032..fe2c59c 100644
--- a/src/Hakyll/Core/Rules.hs
+++ b/src/Hakyll/Core/Rules.hs
@@ -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,14 +129,11 @@ 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
- tellCompilers $ flip map ids $ \identifier ->
- (identifier, constA (fromIdentifier identifier) >>> compiler)
- tellResources $ map fromIdentifier ids
+compile compiler = do
+ ids <- resources
+ tellCompilers $ flip map ids $ \identifier ->
+ (identifier, constA (fromIdentifier identifier) >>> compiler)
+ tellResources $ map fromIdentifier ids
-- | Add a compilation rule
--
@@ -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.