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 +3/−2
- library/Eternity/Timestamped/Conversion.hs +0/−27
- library/Eternity/Timestamped/Data.hs +8/−41
- library/Eternity/Timestamped/Data/Conversion.hs +27/−0
- library/Eternity/Timestamped/Data/TypesAndInstances.hs +38/−0
- library/Eternity/Timestamped/Foldl.hs +2/−3
- library/Eternity/Timestamped/Potoki/Transform.hs +0/−1
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