hakyll/src/Hakyll/Core/Provider.hs

47 lines
1.5 KiB
Haskell
Raw Normal View History

2012-10-29 14:01:58 +00:00
--------------------------------------------------------------------------------
2012-11-08 11:45:26 +00:00
-- | This module provides an wrapper API around the file system which does some
-- caching.
2012-11-18 20:56:52 +00:00
module Hakyll.Core.Provider
2012-11-08 11:45:26 +00:00
( -- * Constructing resource providers
2012-11-18 20:56:52 +00:00
Provider
, newProvider
2012-11-08 11:45:26 +00:00
-- * Querying resource properties
, resourceList
2010-12-31 12:28:31 +00:00
, resourceExists
, resourceModified
2012-11-08 11:45:26 +00:00
, resourceModificationTime
2012-10-29 14:01:58 +00:00
2012-11-08 11:45:26 +00:00
-- * Access to raw resource content
, resourceString
, resourceLBS
2012-11-08 11:45:26 +00:00
-- * Access to metadata and body content
, resourceMetadata
, resourceBody
) where
2010-12-31 12:28:31 +00:00
2012-10-29 14:01:58 +00:00
--------------------------------------------------------------------------------
2012-11-09 15:34:45 +00:00
import Hakyll.Core.Identifier
import Hakyll.Core.Metadata
2012-11-18 20:56:52 +00:00
import Hakyll.Core.Provider.Internal
import qualified Hakyll.Core.Provider.MetadataCache as Internal
import Hakyll.Core.Provider.Modified
2012-10-29 14:01:58 +00:00
--------------------------------------------------------------------------------
2012-11-08 11:45:26 +00:00
-- | Wrapper to ensure metadata cache is invalidated if necessary
2012-11-18 20:56:52 +00:00
resourceMetadata :: Provider -> Identifier -> IO Metadata
2012-11-08 11:45:26 +00:00
resourceMetadata rp r = do
_ <- resourceModified rp r
Internal.resourceMetadata rp r
2012-10-29 14:01:58 +00:00
--------------------------------------------------------------------------------
2012-11-08 11:45:26 +00:00
-- | Wrapper to ensure metadata cache is invalidated if necessary
2012-11-18 20:56:52 +00:00
resourceBody :: Provider -> Identifier -> IO String
2012-11-08 11:45:26 +00:00
resourceBody rp r = do
_ <- resourceModified rp r
Internal.resourceBody rp r