-- | -- Module : Data.Hourglass.Utils -- License : BSD-style -- Maintainer : Vincent Hanquez -- Stability : experimental -- Portability : unknown -- -- some padding / formatting functions -- module Data.Hourglass.Utils where -- | pad a number to 2 digits pad2 :: (Show a, Ord a, Num a, Integral a) => a -> String pad2 v | v >= 100 = pad2 (v `mod` 100) | v >= 10 = show v | otherwise = '0' : show v -- | pad a number to 4 digits pad4 :: (Show a, Ord a, Num a, Integral a) => a -> String pad4 v | v >= 1000 = show v | v >= 100 = '0' : show v | v >= 10 = '0':'0' : show v | otherwise = '0':'0':'0': show v -- | Pad a number to at least N digits. -- -- if the number is greater, no truncation happens. padN :: (Show a, Ord a, Num a, Integral a) => Int -> a -> String padN n v | vlen >= n = vs | otherwise = replicate (n - vlen) '0' ++ vs where vs = show v vlen = length vs