packages feed

eternity-timestamped 0.1 → 0.2

raw patch · 7 files changed

+78/−74 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Eternity.Timestamped.Conversion: posixTimeTimestamp :: POSIXTime -> Timestamp
- Eternity.Timestamped.Conversion: timestampMicroSecondsInt64 :: Timestamp -> Int64
- Eternity.Timestamped.Conversion: timestampNominalDiffTime :: Timestamp -> NominalDiffTime
- Eternity.Timestamped.Conversion: timestampPosixTime :: Timestamp -> POSIXTime
- Eternity.Timestamped.Conversion: timestampUtcTime :: Timestamp -> UTCTime
- Eternity.Timestamped.Conversion: utcTimeTimestamp :: UTCTime -> Timestamp
- Eternity.Timestamped.Data: instance Data.Hashable.Class.Hashable Eternity.Timestamped.Data.Timestamp
- Eternity.Timestamped.Data: instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (Eternity.Timestamped.Data.Timestamped a)
- Eternity.Timestamped.Data: instance Data.Serialize.Serialize Eternity.Timestamped.Data.Timestamp
- Eternity.Timestamped.Data: instance Data.Serialize.Serialize a => Data.Serialize.Serialize (Eternity.Timestamped.Data.Timestamped a)
- Eternity.Timestamped.Data: instance GHC.Base.Functor Eternity.Timestamped.Data.Timestamped
- Eternity.Timestamped.Data: instance GHC.Classes.Eq Eternity.Timestamped.Data.Timestamp
- Eternity.Timestamped.Data: instance GHC.Classes.Eq a => GHC.Classes.Eq (Eternity.Timestamped.Data.Timestamped a)
- Eternity.Timestamped.Data: instance GHC.Classes.Ord Eternity.Timestamped.Data.Timestamp
- Eternity.Timestamped.Data: instance GHC.Classes.Ord a => GHC.Classes.Ord (Eternity.Timestamped.Data.Timestamped a)
- Eternity.Timestamped.Data: instance GHC.Generics.Generic (Eternity.Timestamped.Data.Timestamped a)
- Eternity.Timestamped.Data: instance GHC.Generics.Generic Eternity.Timestamped.Data.Timestamp
- Eternity.Timestamped.Data: instance GHC.Show.Show Eternity.Timestamped.Data.Timestamp
- Eternity.Timestamped.Data: instance GHC.Show.Show a => GHC.Show.Show (Eternity.Timestamped.Data.Timestamped a)
- Eternity.Timestamped.Data: instance Test.QuickCheck.Arbitrary.Arbitrary Eternity.Timestamped.Data.Timestamp
- Eternity.Timestamped.Data: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Eternity.Timestamped.Data.Timestamped a)
+ Eternity.Timestamped.Data: posixTimeTimestamp :: POSIXTime -> Timestamp
+ Eternity.Timestamped.Data: timestampMicroSecondsInt64 :: Timestamp -> Int64
+ Eternity.Timestamped.Data: timestampNominalDiffTime :: Timestamp -> NominalDiffTime
+ Eternity.Timestamped.Data: timestampPosixTime :: Timestamp -> POSIXTime
+ Eternity.Timestamped.Data: timestampUtcTime :: Timestamp -> UTCTime
+ Eternity.Timestamped.Data: utcTimeTimestamp :: UTCTime -> Timestamp

Files

eternity-timestamped.cabal view
@@ -1,7 +1,7 @@ name:   eternity-timestamped version:-  0.1+  0.2 synopsis:   Automatic timestamping for Eternity category:@@ -39,13 +39,14 @@   default-language:     Haskell2010   exposed-modules:-    Eternity.Timestamped.Conversion     Eternity.Timestamped.Data     Eternity.Timestamped.Foldl     Eternity.Timestamped.Potoki.Consume     Eternity.Timestamped.Potoki.Produce     Eternity.Timestamped.Potoki.Transform   other-modules:+    Eternity.Timestamped.Data.Conversion+    Eternity.Timestamped.Data.TypesAndInstances     Eternity.Timestamped.Prelude   build-depends:     attoparsec >=0.13 && <0.14,
− library/Eternity/Timestamped/Conversion.hs
@@ -1,27 +0,0 @@-module Eternity.Timestamped.Conversion-where--import Eternity.Timestamped.Prelude-import Eternity.Timestamped.Data---timestampMicroSecondsInt64 :: Timestamp -> Int64-timestampMicroSecondsInt64 (Timestamp prim) = prim-  -timestampNominalDiffTime :: Timestamp -> NominalDiffTime-timestampNominalDiffTime =-  unsafeCoerce . (* 1000000) . toInteger . timestampMicroSecondsInt64--timestampPosixTime :: Timestamp -> POSIXTime-timestampPosixTime = timestampNominalDiffTime--timestampUtcTime :: Timestamp -> UTCTime-timestampUtcTime = posixSecondsToUTCTime . timestampPosixTime--utcTimeTimestamp :: UTCTime -> Timestamp-utcTimeTimestamp =-  posixTimeTimestamp . utcTimeToPOSIXSeconds--posixTimeTimestamp :: POSIXTime -> Timestamp-posixTimeTimestamp =-  Timestamp . fromIntegral . flip div 1000000 . (unsafeCoerce :: NominalDiffTime -> Integer)
library/Eternity/Timestamped/Data.hs view
@@ -1,44 +1,11 @@ module Eternity.Timestamped.Data+(+  -- * Types+  module Eternity.Timestamped.Data.TypesAndInstances,+  -- * Conversion utilities+  module Eternity.Timestamped.Data.Conversion,+) where -import Eternity.Timestamped.Prelude-import qualified Generic.Random as A----- * Types----------------------------{-|-A value paired with a timestamp. --}-data Timestamped event = Timestamped {-# UNPACK #-} !Timestamp !event--{-|-Amount of microseconds since @1970-01-01 00:00.000000 UTC@.-The semantics are the same as of 'Data.Time.Clock.POSIX.POSIXTime'.--This datatype is used instead of 'UTCTime' for space-efficiency.--}-newtype Timestamp = Timestamp Int64----- * Instances----------------------------deriving instance Eq a => Eq (Timestamped a)-deriving instance Ord a => Ord (Timestamped a)-deriving instance Show a => Show (Timestamped a)-deriving instance Functor Timestamped-deriving instance Generic (Timestamped a)-instance Arbitrary a => Arbitrary (Timestamped a) where arbitrary = A.genericArbitraryU-instance Hashable a => Hashable (Timestamped a)-instance Serialize a => Serialize (Timestamped a)--deriving instance Eq Timestamp-deriving instance Ord Timestamp-deriving instance Show Timestamp-deriving instance Generic Timestamp-instance Arbitrary Timestamp where arbitrary = A.genericArbitraryU-instance Hashable Timestamp-instance Serialize Timestamp-+import Eternity.Timestamped.Data.TypesAndInstances+import Eternity.Timestamped.Data.Conversion
+ library/Eternity/Timestamped/Data/Conversion.hs view
@@ -0,0 +1,27 @@+module Eternity.Timestamped.Data.Conversion+where++import Eternity.Timestamped.Prelude+import Eternity.Timestamped.Data.TypesAndInstances+++timestampMicroSecondsInt64 :: Timestamp -> Int64+timestampMicroSecondsInt64 (Timestamp prim) = prim+  +timestampNominalDiffTime :: Timestamp -> NominalDiffTime+timestampNominalDiffTime =+  unsafeCoerce . (* 1000000) . toInteger . timestampMicroSecondsInt64++timestampPosixTime :: Timestamp -> POSIXTime+timestampPosixTime = timestampNominalDiffTime++timestampUtcTime :: Timestamp -> UTCTime+timestampUtcTime = posixSecondsToUTCTime . timestampPosixTime++utcTimeTimestamp :: UTCTime -> Timestamp+utcTimeTimestamp =+  posixTimeTimestamp . utcTimeToPOSIXSeconds++posixTimeTimestamp :: POSIXTime -> Timestamp+posixTimeTimestamp =+  Timestamp . fromIntegral . flip div 1000000 . (unsafeCoerce :: NominalDiffTime -> Integer)
+ library/Eternity/Timestamped/Data/TypesAndInstances.hs view
@@ -0,0 +1,38 @@+module Eternity.Timestamped.Data.TypesAndInstances+where++import Eternity.Timestamped.Prelude+import qualified Generic.Random as A+++{-|+A value paired with a timestamp. +-}+data Timestamped event = Timestamped {-# UNPACK #-} !Timestamp !event++{-|+Amount of microseconds since @1970-01-01 00:00.000000 UTC@.+The semantics are the same as of 'Data.Time.Clock.POSIX.POSIXTime'.++This datatype is used instead of 'UTCTime' for space-efficiency.+-}+newtype Timestamp = Timestamp Int64+++deriving instance Eq a => Eq (Timestamped a)+deriving instance Ord a => Ord (Timestamped a)+deriving instance Show a => Show (Timestamped a)+deriving instance Functor Timestamped+deriving instance Generic (Timestamped a)+instance Arbitrary a => Arbitrary (Timestamped a) where arbitrary = A.genericArbitraryU+instance Hashable a => Hashable (Timestamped a)+instance Serialize a => Serialize (Timestamped a)++deriving instance Eq Timestamp+deriving instance Ord Timestamp+deriving instance Show Timestamp+deriving instance Generic Timestamp+instance Arbitrary Timestamp where arbitrary = A.genericArbitraryU+instance Hashable Timestamp+instance Serialize Timestamp+
library/Eternity/Timestamped/Foldl.hs view
@@ -7,7 +7,6 @@ import Eternity.Timestamped.Prelude hiding (maximum) import Eternity.Timestamped.Data import Control.Foldl-import qualified Eternity.Timestamped.Conversion as A   untimestamped :: Fold input output -> Fold (Timestamped input) output@@ -16,7 +15,7 @@  filteringByUtcTime :: (UTCTime -> Bool) -> Fold (Timestamped input) output -> Fold (Timestamped input) output filteringByUtcTime filter =-  filteringByTimestamp (filter . A.timestampUtcTime)+  filteringByTimestamp (filter . timestampUtcTime)  filteringByTimestamp :: (Timestamp -> Bool) -> Fold (Timestamped input) output -> Fold (Timestamped input) output filteringByTimestamp filter =@@ -24,7 +23,7 @@  inUtcTimeRange :: UTCTime -> UTCTime -> Fold (Timestamped input) output -> Fold (Timestamped input) output inUtcTimeRange start end =-  inTimestampRange (A.utcTimeTimestamp start) (A.utcTimeTimestamp end)+  inTimestampRange (utcTimeTimestamp start) (utcTimeTimestamp end)  inTimestampRange :: Timestamp -> Timestamp -> Fold (Timestamped input) output -> Fold (Timestamped input) output inTimestampRange start end =
library/Eternity/Timestamped/Potoki/Transform.hs view
@@ -3,7 +3,6 @@  import Eternity.Timestamped.Prelude import Eternity.Timestamped.Data-import Eternity.Timestamped.Conversion import Potoki.Transform