packages feed

pdf-slave-server-0.1.1.0: src/Text/PDF/Slave/Server/Util.hs

module Text.PDF.Slave.Server.Util(
    ffor
  , whenJust
  , showl
  , showt
  , toMicroseconds
  ) where

import Control.Monad.Logger
import Data.Text
import Data.Time

-- | Fliped fmap
ffor :: Functor f => f a -> (a -> b) -> f b
ffor = flip fmap

-- | Execute applicative action only when the value is 'Just'
whenJust :: Applicative f => Maybe a -> (a -> f ()) -> f ()
whenJust (Just a) m = m a
whenJust Nothing _ = pure ()

-- | Convert anything to log string
showl :: Show a => a -> LogStr
showl = toLogStr . show

-- | Convert anything to log string
showt :: Show a => a -> Text
showt = pack . show

-- | Convert time internval to count of microseconds
toMicroseconds :: NominalDiffTime -> Integer
toMicroseconds dt = round $ (realToFrac dt :: Rational) * 1000000