{-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE OverloadedStrings #-} module Data.Hourglass.Types.Orphans ( -- * Re-exports module Data.Hourglass.Types ) where import Data.Hourglass.Types import Data.Aeson import Data.Aeson.TH #if !MIN_VERSION_base(4,8,0) import Control.Applicative ((<$>), (<*>)) import Data.Monoid (mempty) #endif deriveJSON defaultOptions ''Month deriveJSON defaultOptions ''WeekDay deriveJSON defaultOptions ''NanoSeconds deriveJSON defaultOptions ''Seconds deriveJSON defaultOptions ''Minutes deriveJSON defaultOptions ''Hours deriveJSON defaultOptions ''TimezoneOffset deriveJSON defaultOptions ''Elapsed instance ToJSON ElapsedP where toJSON (ElapsedP e n) = object ["seconds" .= toJSON e, "nanoseconds" .= toJSON n] instance FromJSON ElapsedP where parseJSON (Object v) = ElapsedP <$> (v .: "seconds") <*> (v .: "nanoseconds") parseJSON _ = mempty deriveJSON defaultOptions ''Date deriveJSON defaultOptions ''TimeOfDay deriveJSON defaultOptions ''DateTime