clay-0.0.1: src/Clay/Time.hs
{-# LANGUAGE OverloadedStrings, GeneralizedNewtypeDeriving #-}
module Clay.Time
(
-- * Time type.
Time
-- * Time constructors.
, sec
, ms
)
where
import Data.Monoid
import Data.Text (pack)
import Clay.Common
import Clay.Property
-------------------------------------------------------------------------------
newtype Time = Time Value
deriving (Val, Auto, Normal, Inherit, None, Other)
-- | Time in seconds.
sec :: Double -> Time
sec i = Time (value (pack (show i) <> "s"))
-- | Time in milliseconds.
ms :: Double -> Time
ms i = Time (value (pack (show i) <> "ms"))
instance Num Time where
fromInteger = sec . fromInteger
(+) = error "plus not implemented for Time"
(*) = error "times not implemented for Time"
abs = error "abs not implemented for Time"
signum = error "signum not implemented for Time"
instance Fractional Time where
fromRational = sec . fromRational