module Hakyll.Core.Resource.Provider.File
( fileResourceProvider
) where
import Control.Applicative ((<$>))
import Control.Concurrent (newMVar)
import qualified Data.Map as M
import qualified Data.ByteString.Lazy as LB
import Hakyll.Core.Resource
import Hakyll.Core.Resource.Provider
import Hakyll.Core.Identifier
import Hakyll.Core.Util.File
import Hakyll.Core.Configuration
fileResourceProvider :: HakyllConfiguration -> IO ResourceProvider
fileResourceProvider configuration = do
list <- map parseIdentifier . filter (not . ignoreFile configuration) <$>
getRecursiveContents False "."
mvar <- newMVar M.empty
return ResourceProvider
{ resourceList = map Resource list
, resourceString = readFile . toFilePath . unResource
, resourceLazyByteString = LB.readFile . toFilePath . unResource
, resourceModifiedCache = mvar
}