mirror of
https://github.com/github/semantic.git
synced 2024-12-20 21:31:48 +03:00
Refine our Duration api
This commit is contained in:
parent
a6ce4f672f
commit
d16c07dfc6
@ -2,17 +2,33 @@ module Data.Duration
|
||||
( Duration(..)
|
||||
, fromSeconds
|
||||
, fromMilliseconds
|
||||
, fromMicroseconds
|
||||
, fromNanoseconds
|
||||
, toMicroseconds
|
||||
) where
|
||||
|
||||
-- A duration suitable for timeouts.
|
||||
-- A duration suitable for timeouts stored as an int of milliseconds.
|
||||
newtype Duration = Milliseconds Int
|
||||
deriving (Eq, Ord)
|
||||
|
||||
fromMilliseconds :: Int -> Duration
|
||||
fromMilliseconds n = Milliseconds (n * 1000)
|
||||
instance Show Duration where
|
||||
showsPrec _ (Milliseconds n) = shows n <> showString "ms"
|
||||
|
||||
fromSeconds :: Int -> Duration
|
||||
fromSeconds n = Milliseconds (n * 1000)
|
||||
fromSeconds n = fromMilliseconds (n * 1000)
|
||||
|
||||
-- milli = 10E-3 seconds
|
||||
fromMilliseconds :: Int -> Duration
|
||||
fromMilliseconds n | n <= 0 = Milliseconds 0
|
||||
| otherwise = Milliseconds n
|
||||
|
||||
-- micro = 10E-6 seconds
|
||||
fromMicroseconds :: Int -> Duration
|
||||
fromMicroseconds n = fromMilliseconds (n `div` 1000)
|
||||
|
||||
-- nano = 10E-9 seconds
|
||||
fromNanoseconds :: Int -> Duration
|
||||
fromNanoseconds n = fromMicroseconds (n `div` 1000)
|
||||
|
||||
toMicroseconds :: Duration -> Int
|
||||
toMicroseconds (Milliseconds n) = n * 1000
|
||||
|
Loading…
Reference in New Issue
Block a user