-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Date cacher
--   
--   Formatting time is slow. This package provides mechanisms to cache
--   formatted date
@package date-cache
@version 0.3.0


-- | Formatting time is slow. This package provides mechanisms to cache
--   formatted date.
module System.Date.Cache
data DateCacheConf t
DateCacheConf :: IO t -> (t -> IO ByteString) -> DateCacheConf t

-- | A function to get a time. E.g <tt>epochTime</tt> and
--   <tt>getCurrentTime</tt>.
[getTime] :: DateCacheConf t -> IO t

-- | A function to format a time.
[formatDate] :: DateCacheConf t -> t -> IO ByteString
type DateCacheGetter = IO ByteString
type DateCacheCloser = IO ()

-- | Date cacher which gets a time and formatted it only when returned
--   getter is executed.
ondemandDateCacher :: Eq t => DateCacheConf t -> IO (DateCacheGetter, DateCacheCloser)

-- | Date cacher which gets a time and formatted it every second. This
--   returns a getter.
clockDateCacher :: Eq t => DateCacheConf t -> IO (DateCacheGetter, DateCacheCloser)
instance GHC.Show.Show t => GHC.Show.Show (System.Date.Cache.DateCache t)
instance GHC.Classes.Eq t => GHC.Classes.Eq (System.Date.Cache.DateCache t)
