packages feed

timemap 0.0.4 → 0.0.5

raw patch · 3 files changed

+74/−2 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.TimeSet: TimeSet :: TimeMap a () -> TimeSet a
+ Data.TimeSet: [getTimeSet] :: TimeSet a -> TimeMap a ()
+ Data.TimeSet: ageOf :: (Hashable a, Eq a) => a -> TimeSet a -> IO (Maybe NominalDiffTime)
+ Data.TimeSet: delete :: (Hashable a, Eq a) => a -> TimeSet a -> STM ()
+ Data.TimeSet: elem :: (Hashable a, Eq a) => a -> TimeSet a -> STM Bool
+ Data.TimeSet: elems :: (Hashable a, Eq a) => TimeSet a -> STM (HashSet a)
+ Data.TimeSet: filter :: (Hashable a, Eq a) => (a -> Bool) -> TimeSet a -> STM ()
+ Data.TimeSet: filterFromNow :: (Hashable a, Eq a) => NominalDiffTime -> TimeSet a -> IO ()
+ Data.TimeSet: filterSince :: (Hashable a, Eq a) => UTCTime -> TimeSet a -> STM ()
+ Data.TimeSet: insert :: (Hashable a, Eq a) => a -> TimeSet a -> IO ()
+ Data.TimeSet: insertWithTime :: (Hashable a, Eq a) => UTCTime -> a -> TimeSet a -> STM ()
+ Data.TimeSet: newTimeSet :: STM (TimeSet a)
+ Data.TimeSet: newtype TimeSet a
+ Data.TimeSet: null :: TimeSet a -> STM Bool
+ Data.TimeSet: size :: TimeSet a -> STM Int
+ Data.TimeSet: timeOf :: (Hashable a, Eq a) => a -> TimeSet a -> STM (Maybe UTCTime)
+ Data.TimeSet: touch :: (Hashable a, Eq a) => a -> TimeSet a -> IO ()

Files

src/Data/TimeMap.hs view
@@ -59,7 +59,7 @@ import qualified Focus                    as F import qualified ListT                    as L import Control.Monad (forM)-import Control.Concurrent.STM+import Control.Concurrent.STM (STM, atomically, TVar, writeTVar, readTVar, modifyTVar', modifyTVar, newTVar)   data TimeIndexed a = TimeIndexed
+ src/Data/TimeSet.hs view
@@ -0,0 +1,71 @@+module Data.TimeSet where++import Data.TimeMap (TimeMap, newTimeMap)+import qualified Data.TimeMap as TimeMap+import Data.Hashable (Hashable (..))+import Data.Time (UTCTime, NominalDiffTime, addUTCTime, diffUTCTime, getCurrentTime)+import qualified Data.HashSet             as HS+import Control.Concurrent.STM (STM)+++newtype TimeSet a = TimeSet {getTimeSet :: TimeMap a ()}+++newTimeSet :: STM (TimeSet a)+newTimeSet = TimeSet <$> newTimeMap+++insert :: (Hashable a, Eq a) => a -> TimeSet a -> IO ()+insert a (TimeSet xs) = TimeMap.insert a () xs+++insertWithTime :: (Hashable a, Eq a) => UTCTime -> a -> TimeSet a -> STM ()+insertWithTime t a (TimeSet xs) = TimeMap.insertWithTime t a () xs+++elem :: (Hashable a, Eq a) => a -> TimeSet a -> STM Bool+elem a (TimeSet xs) = do+  r <- TimeMap.lookup a xs+  case r of+    Nothing -> pure False+    Just () -> pure True+++elems :: (Hashable a, Eq a) => TimeSet a -> STM (HS.HashSet a)+elems (TimeSet xs) = TimeMap.keys xs+++size :: TimeSet a -> STM Int+size (TimeSet xs) = TimeMap.size xs+++null :: TimeSet a -> STM Bool+null (TimeSet xs) = TimeMap.null xs+++timeOf :: (Hashable a, Eq a) => a -> TimeSet a -> STM (Maybe UTCTime)+timeOf a (TimeSet xs) = TimeMap.timeOf a xs+++ageOf :: (Hashable a, Eq a) => a -> TimeSet a -> IO (Maybe NominalDiffTime)+ageOf a (TimeSet xs) = TimeMap.ageOf a xs+++delete :: (Hashable a, Eq a) => a -> TimeSet a -> STM ()+delete a (TimeSet xs) = TimeMap.delete a xs+++touch :: (Hashable a, Eq a) => a -> TimeSet a -> IO ()+touch a (TimeSet xs) = TimeMap.touch a xs+++filter :: (Hashable a, Eq a) => (a -> Bool) -> TimeSet a -> STM ()+filter f (TimeSet xs) = TimeMap.filterWithKey (\k _ -> f k) xs+++filterSince :: (Hashable a, Eq a) => UTCTime -> TimeSet a -> STM ()+filterSince t (TimeSet xs) = TimeMap.filterSince t xs+++filterFromNow :: (Hashable a, Eq a) => NominalDiffTime -> TimeSet a -> IO ()+filterFromNow t (TimeSet xs) = TimeMap.filterFromNow t xs
timemap.cabal view
@@ -1,5 +1,5 @@ Name:                   timemap-Version:                0.0.4+Version:                0.0.5 Author:                 Athan Clark <athan.clark@gmail.com> Maintainer:             Athan Clark <athan.clark@gmail.com> License:                BSD3@@ -19,6 +19,7 @@   HS-Source-Dirs:       src   GHC-Options:          -Wall   Exposed-Modules:      Data.TimeMap+                        Data.TimeSet   Other-Modules:        Data.TimeMap.Internal   Build-Depends:        base >= 4.8 && < 5                       , containers