-- #hide module Data.Time.Calendar.Private where import Data.Fixed type NumericPadOption = Maybe Char pad1 :: NumericPadOption -> String -> String pad1 (Just c) s = c:s pad1 _ s = s padN :: Int -> Char -> String -> String padN i _ s | i <= 0 = s padN i c s = (replicate i c) ++ s show2Fixed :: NumericPadOption -> Pico -> String show2Fixed opt x | x < 10 = pad1 opt (showFixed True x) show2Fixed _ x = showFixed True x showPaddedMin :: (Num t,Ord t,Show t) => Int -> NumericPadOption -> t -> String showPaddedMin _ Nothing i = show i showPaddedMin pl opt i | i < 0 = '-':(showPaddedMin pl opt (negate i)) showPaddedMin pl (Just c) i = let s = show i in padN (pl - (length s)) c s show2 :: (Num t,Ord t,Show t) => NumericPadOption -> t -> String show2 = showPaddedMin 2 show3 :: (Num t,Ord t,Show t) => NumericPadOption -> t -> String show3 = showPaddedMin 3 show4 :: (Num t,Ord t,Show t) => NumericPadOption -> t -> String show4 = showPaddedMin 4 mod100 :: (Integral i) => i -> i mod100 x = mod x 100 div100 :: (Integral i) => i -> i div100 x = div x 100 clip :: (Ord t) => t -> t -> t -> t clip a _ x | x < a = a clip _ b x | x > b = b clip _ _ x = x clipValid :: (Ord t) => t -> t -> t -> Maybe t clipValid a _ x | x < a = Nothing clipValid _ b x | x > b = Nothing clipValid _ _ x = Just x