timespan 0.1.0.0 → 0.2.0.0
raw patch · 4 files changed
+95/−8 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Time.TimeSpan: absTS :: TimeSpan -> TimeSpan
+ Data.Time.TimeSpan: instance GHC.Show.Show Data.Time.TimeSpan.TimeSpan
+ Data.Time.TimeSpan: timeoutTS :: TimeSpan -> IO a -> IO (Maybe a)
+ Data.Time.TimeSpan: toMicroseconds :: TimeSpan -> Double
Files
- README.md +8/−0
- src/Data/Time/TimeSpan.hs +16/−5
- stack.yaml +66/−0
- timespan.cabal +5/−3
+ README.md view
@@ -0,0 +1,8 @@+# Haskell `timespan` package++[](https://circleci.com/gh/agrafix/timespan)+[](http://hackage.haskell.org/package/timespan)++The `timespan` packages provides an abstract data type for time spans. You can create them using well named quantities (`seconds`) and+turn them back into a specified quantity. There are also some wrapper functions around commonly used functions that usually represent+time spans as `Int` that now explicitly take a `timespan`.
src/Data/Time/TimeSpan.hs view
@@ -2,9 +2,10 @@ module Data.Time.TimeSpan ( TimeSpan , milliseconds, seconds, minutes, hours, days- , toMilliseconds, toSeconds, toMinutes, toHours, toDays+ , toMicroseconds, toMilliseconds, toSeconds, toMinutes, toHours, toDays+ , absTS , diffUTCTimeTS, addUTCTimeTS- , sleepTS+ , sleepTS, timeoutTS , timeAction ) where@@ -12,12 +13,13 @@ import Control.Concurrent import Data.Time import System.CPUTime+import System.Timeout -- | An abstract timespan. Use the provided smart constructors to create -- a meaningful timespan newtype TimeSpan = TimeSpan { unTimeSpan :: Double } -- as milliseconds- deriving (Eq, Ord)+ deriving (Show, Eq, Ord) instance Monoid TimeSpan where mempty = TimeSpan 0@@ -38,6 +40,9 @@ days :: Double -> TimeSpan days = hours . (* 24) +toMicroseconds :: TimeSpan -> Double+toMicroseconds = (* 1000) . toMilliseconds+ toMilliseconds :: TimeSpan -> Double toMilliseconds = unTimeSpan @@ -53,14 +58,20 @@ toDays :: TimeSpan -> Double toDays = (/24) . toHours +absTS :: TimeSpan -> TimeSpan+absTS (TimeSpan x) = TimeSpan (abs x)+ diffUTCTimeTS :: UTCTime -> UTCTime -> TimeSpan diffUTCTimeTS a b = seconds $ fromRational $ toRational $ diffUTCTime a b addUTCTimeTS :: TimeSpan -> UTCTime -> UTCTime-addUTCTimeTS a b = addUTCTime (fromRational $ toRational $ toSeconds a) b+addUTCTimeTS a = addUTCTime (fromRational $ toRational $ toSeconds a) sleepTS :: TimeSpan -> IO ()-sleepTS ts = threadDelay (round $ toMilliseconds ts * 1000)+sleepTS ts = threadDelay (round $ toMicroseconds ts)++timeoutTS :: TimeSpan -> IO a -> IO (Maybe a)+timeoutTS ts = timeout (round $ toMicroseconds ts) timeAction :: IO a -> IO (TimeSpan, a) timeAction action =
+ stack.yaml view
@@ -0,0 +1,66 @@+# This file was automatically generated by 'stack init'+# +# Some commonly used options have been documented as comments in this file.+# For advanced use and comprehensive documentation of the format, please see:+# http://docs.haskellstack.org/en/stable/yaml_configuration/++# Resolver to choose a 'specific' stackage snapshot or a compiler version.+# A snapshot resolver dictates the compiler version and the set of packages+# to be used for project dependencies. For example:+# +# resolver: lts-3.5+# resolver: nightly-2015-09-21+# resolver: ghc-7.10.2+# resolver: ghcjs-0.1.0_ghc-7.10.2+# resolver:+# name: custom-snapshot+# location: "./custom-snapshot.yaml"+resolver: lts-6.16++# User packages to be built.+# Various formats can be used as shown in the example below.+# +# packages:+# - some-directory+# - https://example.com/foo/bar/baz-0.0.2.tar.gz+# - location:+# git: https://github.com/commercialhaskell/stack.git+# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a+# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a+# extra-dep: true+# subdirs:+# - auto-update+# - wai+# +# A package marked 'extra-dep: true' will only be built if demanded by a+# non-dependency (i.e. a user package), and its test suites and benchmarks+# will not be run. This is useful for tweaking upstream packages.+packages:+- '.'+# Dependency packages to be pulled from upstream that are not in the resolver+# (e.g., acme-missiles-0.3)+extra-deps: []++# Override default flag values for local packages and extra-deps+flags: {}++# Extra package databases containing global packages+extra-package-dbs: []++# Control whether we use the GHC we find on the path+# system-ghc: true+# +# Require a specific version of stack, using version ranges+# require-stack-version: -any # Default+# require-stack-version: ">=1.1"+# +# Override the architecture used by stack, especially useful on Windows+# arch: i386+# arch: x86_64+# +# Extra directories used by stack for building+# extra-include-dirs: [/path/to/dir]+# extra-lib-dirs: [/path/to/dir]+# +# Allow a newer minor version of GHC than the snapshot specifies+# compiler-check: newer-minor
timespan.cabal view
@@ -1,7 +1,7 @@ name: timespan-version: 0.1.0.0+version: 0.2.0.0 synopsis: Useful timespan datatype and functions-description: Please see README.md+description: A data type for time spans with some useful utility functions homepage: https://github.com/agrafix/timespan#readme license: MIT license-file: LICENSE@@ -10,7 +10,9 @@ copyright: 2016 Alexander Thiemann category: Web build-type: Simple--- extra-source-files:+extra-source-files:+ stack.yaml+ README.md cabal-version: >=1.10 library