module Text.Printf.TH.Printer.String where
import NumericUtils
import Text.Printf.TH.Printer
instance Printer String where
type Output String = String
string = id
formatChar' = pure
cons = (:)
output _ = id
rjust c n s
| diff <= 0 = s
| otherwise = replicate diff c ++ s
where
diff = fromIntegral n length s
ljust n s
| diff <= 0 = s
| otherwise = s ++ replicate diff ' '
where
diff = fromIntegral n length s
formatDec' = showIntAtBase 10 intToDigit
formatOct' = showIntAtBase 8 intToDigit
formatHex' = showIntAtBase 16 intToDigit
formatHexUpper' = showIntAtBase 16 intToDigitUpper
formatFloat' p =
( formatRealFloatAlt FFFixed (fromIntegral <$> p) False False
, formatRealFloatAlt FFFixed (fromIntegral <$> p) True False)
formatHexFloat' p =
( formatFloatHex (fromIntegral <$> p) False False
, formatFloatHex (fromIntegral <$> p) True False)
formatHexFloatUpper' p =
( formatFloatHex (fromIntegral <$> p) False True
, formatFloatHex (fromIntegral <$> p) True True)
formatSci' p =
( formatRealFloatAlt FFExponent (fromIntegral <$> p) False False
, formatRealFloatAlt FFExponent (fromIntegral <$> p) True False)
formatSciUpper' p =
( formatRealFloatAlt FFExponent (fromIntegral <$> p) False True
, formatRealFloatAlt FFExponent (fromIntegral <$> p) True True)
formatG' p =
( formatRealFloatAlt FFGeneric (fromIntegral <$> p) False False
, formatRealFloatAlt FFGeneric (fromIntegral <$> p) True False)
formatGUpper' p =
( formatRealFloatAlt FFGeneric (fromIntegral <$> p) False True
, formatRealFloatAlt FFGeneric (fromIntegral <$> p) True True)