{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Hakyll.Core.Provider.Internal
( ResourceInfo (..)
, Provider (..)
, newProvider
, resourceList
, resourceExists
, resourceFilePath
, resourceString
, resourceLBS
, resourceModified
, resourceModificationTime
) where
import Control.DeepSeq (NFData (..), deepseq)
import Control.Monad (forM)
import Data.Binary (Binary (..))
import qualified Data.ByteString.Lazy as BL
import Data.Map (Map)
import qualified Data.Map as M
import Data.Maybe (fromMaybe)
import Data.Set (Set)
import qualified Data.Set as S
import Data.Time (Day (..), UTCTime (..))
import Data.Typeable (Typeable)
import System.Directory (getModificationTime)
import System.FilePath (addExtension, (</>))
#if !MIN_VERSION_directory(1,2,0)
import Data.Time (readTime)
import System.Locale (defaultTimeLocale)
import System.Time (formatCalendarTime, toCalendarTime)
#endif
import Hakyll.Core.Identifier
import Hakyll.Core.Store (Store)
import qualified Hakyll.Core.Store as Store
import Hakyll.Core.Util.File
newtype BinaryTime = BinaryTime {BinaryTime -> UTCTime
unBinaryTime :: UTCTime}
deriving (BinaryTime -> BinaryTime -> Bool
(BinaryTime -> BinaryTime -> Bool)
-> (BinaryTime -> BinaryTime -> Bool) -> Eq BinaryTime
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BinaryTime -> BinaryTime -> Bool
$c/= :: BinaryTime -> BinaryTime -> Bool
== :: BinaryTime -> BinaryTime -> Bool
$c== :: BinaryTime -> BinaryTime -> Bool
Eq, BinaryTime -> ()
(BinaryTime -> ()) -> NFData BinaryTime
forall a. (a -> ()) -> NFData a
rnf :: BinaryTime -> ()
$crnf :: BinaryTime -> ()
NFData, Eq BinaryTime
Eq BinaryTime
-> (BinaryTime -> BinaryTime -> Ordering)
-> (BinaryTime -> BinaryTime -> Bool)
-> (BinaryTime -> BinaryTime -> Bool)
-> (BinaryTime -> BinaryTime -> Bool)
-> (BinaryTime -> BinaryTime -> Bool)
-> (BinaryTime -> BinaryTime -> BinaryTime)
-> (BinaryTime -> BinaryTime -> BinaryTime)
-> Ord BinaryTime
BinaryTime -> BinaryTime -> Bool
BinaryTime -> BinaryTime -> Ordering
BinaryTime -> BinaryTime -> BinaryTime
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: BinaryTime -> BinaryTime -> BinaryTime
$cmin :: BinaryTime -> BinaryTime -> BinaryTime
max :: BinaryTime -> BinaryTime -> BinaryTime
$cmax :: BinaryTime -> BinaryTime -> BinaryTime
>= :: BinaryTime -> BinaryTime -> Bool
$c>= :: BinaryTime -> BinaryTime -> Bool
> :: BinaryTime -> BinaryTime -> Bool
$c> :: BinaryTime -> BinaryTime -> Bool
<= :: BinaryTime -> BinaryTime -> Bool
$c<= :: BinaryTime -> BinaryTime -> Bool
< :: BinaryTime -> BinaryTime -> Bool
$c< :: BinaryTime -> BinaryTime -> Bool
compare :: BinaryTime -> BinaryTime -> Ordering
$ccompare :: BinaryTime -> BinaryTime -> Ordering
Ord, Int -> BinaryTime -> ShowS
[BinaryTime] -> ShowS
BinaryTime -> String
(Int -> BinaryTime -> ShowS)
-> (BinaryTime -> String)
-> ([BinaryTime] -> ShowS)
-> Show BinaryTime
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BinaryTime] -> S