on master help sign in
Refactor resource provider creation
commitedcd3151ee54f3f71d2ffe0a60348f6641909ce7 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateTue 12 Apr 2011, 11:43 (16 years ago) parentb37da38
2 files changed+14−15
src/Hakyll/Core/Resource/Provider.hs+11−1 src/Hakyll/Core/Resource/Provider/File.hs+3−14
src/Hakyll/Core/Resource/Provider.hs+11−1
@@ -12,12 +12,14 @@
1212--
1313module Hakyll.Core.Resource.Provider
1414 ( ResourceProvider (..)
15+ , makeResourceProvider
1516 , resourceExists
1617 , resourceDigest
1718 , resourceModified
1819 ) where
1920
20−import Control.Concurrent (MVar, readMVar, modifyMVar_)
21+import Control.Applicative ((<$>))
22+import Control.Concurrent (MVar, readMVar, modifyMVar_, newMVar)
2123import Control.Monad ((<=<))
2224import Data.Word (Word8)
2325import Data.Map (Map)
@@ -43,6 +45,14 @@ data ResourceProvider = ResourceProvider
4345 resourceModifiedCache :: MVar (Map Resource Bool)
4446 }
4547
48+-- | Create a resource provider
49+--
50+makeResourceProvider :: [Resource] -- ^ Resource list
51+ -> (Resource -> IO String) -- ^ String reader
52+ -> (Resource -> IO LB.ByteString) -- ^ ByteString reader
53+ -> IO ResourceProvider -- ^ Resulting provider
54+makeResourceProvider l s b = ResourceProvider l s b <$> newMVar M.empty
55+
4656-- | Check if a given identifier has a resource
4757--
4858resourceExists :: ResourceProvider -> Resource -> Bool
src/Hakyll/Core/Resource/Provider/File.hs+3−14
@@ -5,8 +5,6 @@ module Hakyll.Core.Resource.Provider.File
55 ) where
66
77import Control.Applicative ((<$>))
8−import Control.Concurrent (newMVar)
9−import qualified Data.Map as M
108
119import qualified Data.ByteString.Lazy as LB
1210
@@ -20,16 +18,7 @@ import Hakyll.Core.Configuration
2018fileResourceProvider :: HakyllConfiguration -> IO ResourceProvider
2119fileResourceProvider configuration = do
2220 -- Retrieve a list of paths
23− list <- filter (not . ignoreFile configuration) <$>
21+ list <- map Resource . filter (not . ignoreFile configuration) <$>
2422 getRecursiveContents False "."
25−
26− -- MVar for the cache
27− mvar <- newMVar M.empty
28−
29− -- Construct a resource provider
30− return ResourceProvider
31− { resourceList = map Resource list
32− , resourceString = readFile . unResource
33− , resourceLazyByteString = LB.readFile . unResource
34− , resourceModifiedCache = mvar
35− }
23+ makeResourceProvider list (readFile . unResource)
24+ (LB.readFile . unResource)