    --------------------------------------------------------------------
    -- |
    -- Module    : Text.Feed.Util
    -- Copyright : (c) Galois, Inc. 2008,
    --             (c) Sigbjorn Finne 2009-
    -- License   : BSD3
    --
    -- Maintainer: Sigbjorn Finne <sof@forkIO.com>
    -- Stability : provisional
    -- Portability: portable
    --
    --------------------------------------------------------------------
    module Text.Feed.Util
           ( toFeedDateString
           , toFeedDateStringUTC
           ) where

    import Text.Feed.Types
    import Data.Time (UTCTime, formatTime)
    import qualified Data.Time.Locale.Compat
    import qualified System.Locale
    import System.Time (ClockTime, formatCalendarTime, toUTCTime)

    -- | 'toFeedDateString' translates a calendar time into
    -- the format expected by the feed kind.
    toFeedDateString :: FeedKind -> ClockTime -> {-Date-}String
    toFeedDateString fk ct =
        formatCalendarTime System.Locale.defaultTimeLocale fmt ut
      where
        fmt = feedKindTimeFormat fk
        ut = toUTCTime ct

    -- | 'toFeedDateStringUTC' translates a UTC time into
    -- the format expected by the feed kind.
    toFeedDateStringUTC :: FeedKind -> UTCTime -> {-Date-}String
    toFeedDateStringUTC fk =
        formatTime Data.Time.Locale.Compat.defaultTimeLocale fmt
      where
        fmt = feedKindTimeFormat fk

    -- | Time format expected by the feed kind.
    feedKindTimeFormat :: FeedKind -> String
    feedKindTimeFormat fk =
        case fk of
            AtomKind{} -> atomRdfTimeFormat
            RSSKind{}  -> "%a, %d %b %Y %H:%M:%S GMT"
            RDFKind{}  -> atomRdfTimeFormat
      where
        atomRdfTimeFormat = "%Y-%m-%dT%H:%M:%SZ"