formatting-6.2.5: Combinator-based type-safe formatting (like printf() or FORMAT)

Copyright(c) 2013 Chris Done 2013 Shachaf Ben-Kiki
LicenseBSD3
Maintainerchrisdone@gmail.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell98

Formatting.Formatters

Contents

Description

Formatting functions.

Synopsis

Text/string types

text :: Format r (Text -> r) Source #

Output a lazy text.

stext :: Format r (Text -> r) Source #

Output a strict text.

string :: Format r (String -> r) Source #

Output a string.

shown :: Show a => Format r (a -> r) Source #

Output a showable value (instance of Show) by turning it into Text:

>>> format ("Value number " % shown % " is " % shown % ".") 42 False
"Value number 42 is False."

char :: Format r (Char -> r) Source #

Output a character.

builder :: Format r (Builder -> r) Source #

Build a builder.

fconst :: Builder -> Format r (a -> r) Source #

Like const but for formatters.

Numbers

int :: Integral a => Format r (a -> r) Source #

Render an integral e.g. 123 -> "123", 0 -> "0".

float :: Real a => Format r (a -> r) Source #

Render some floating point with the usual notation, e.g. 123.32 => "123.32"

expt :: Real a => Int -> Format r (a -> r) Source #

Render a floating point number using scientific/engineering notation (e.g. 2.3e123), with the given number of decimal places.

fixed :: Real a => Int -> Format r (a -> r) Source #

Render a floating point number using normal notation, with the given number of decimal places.

prec :: Real a => Int -> Format r (a -> r) Source #

Render a floating point number, with the given number of digits of precision. Uses decimal notation for values between 0.1 and 9,999,999, and scientific notation otherwise.

sci :: Format r (Scientific -> r) Source #

Render a scientific number.

scifmt :: FPFormat -> Maybe Int -> Format r (Scientific -> r) Source #

Render a scientific number with options.

shortest :: Real a => Format r (a -> r) Source #

Render a floating point number using the smallest number of digits that correctly represent it.

groupInt :: (Buildable n, Integral n) => Int -> Char -> Format r (n -> r) Source #

Group integral numbers, e.g. groupInt 2 . on 123456 -> "12.34.56".

commas :: (Buildable n, Integral n) => Format r (n -> r) Source #

Add commas to an integral, e.g 12000 -> "12,000".

ords :: Integral n => Format r (n -> r) Source #

Add a suffix to an integral, e.g. 1st, 2nd, 3rd, 21st.

plural :: (Num a, Eq a) => Text -> Text -> Format r (a -> r) Source #

English plural suffix for an integral.

asInt :: Enum a => Format r (a -> r) Source #

Shows the Int value of Enum instances using fromEnum.

>>> format ("Got: " % char % " (" % asInt % ")") 'a' 'a'
"Got: a (97)"

Padding

left :: Buildable a => Int -> Char -> Format r (a -> r) Source #

Pad the left hand side of a string until it reaches k characters wide, if necessary filling with character c.

right :: Buildable a => Int -> Char -> Format r (a -> r) Source #

Pad the right hand side of a string until it reaches k characters wide, if necessary filling with character c.

center :: Buildable a => Int -> Char -> Format r (a -> r) Source #

Pad the left & right hand side of a string until it reaches k characters wide, if necessary filling with character c.

fitLeft :: Buildable a => Int -> Format r (a -> r) Source #

Fit in the given length, truncating on the left.

fitRight :: Buildable a => Int -> Format r (a -> r) Source #

Fit in the given length, truncating on the right.

Bases

base :: Integral a => Int -> Format r (a -> r) Source #

Render an integral at base n.

bin :: Integral a => Format r (a -> r) Source #

Render an integer using binary notation. (No leading 0b is added.) Defined as bin = base 2.

oct :: Integral a => Format r (a -> r) Source #

Render an integer using octal notation. (No leading 0o is added.) Defined as oct = base 8.

hex :: Integral a => Format r (a -> r) Source #

Render an integer using hexadecimal notation. (No leading 0x is added.) Has a specialized implementation.

prefixBin :: Integral a => Format r (a -> r) Source #

Render an integer using binary notation with a leading 0b.

prefixOct :: Integral a => Format r (a -> r) Source #

Render an integer using octal notation with a leading 0o.

prefixHex :: Integral a => Format r (a -> r) Source #

Render an integer using hexadecimal notation with a leading 0x.

bytes Source #

Arguments

:: (Ord f, Integral a, Fractional f) 
=> Format Builder (f -> Builder)

formatter for the decimal part

-> Format r (a -> r) 

Renders a given byte count using an appropiate decimal binary suffix:

>>> format (bytes shortest) 1024
"1KB"
>>> format (bytes (fixed 2 % " ")) (1024*1024*5)
"5.00 MB"

Buildables

build :: Buildable a => Format r (a -> r) Source #

Build anything that implements the Buildable class.

class Buildable p #

The class of types that can be rendered to a Builder.

Minimal complete definition

build

Instances

Buildable Bool 

Methods

build :: Bool -> Builder #

Buildable Char 

Methods

build :: Char -> Builder #

Buildable Double 

Methods

build :: Double -> Builder #

Buildable Float 

Methods

build :: Float -> Builder #

Buildable Int 

Methods

build :: Int -> Builder #

Buildable Int8 

Methods

build :: Int8 -> Builder #

Buildable Int16 

Methods

build :: Int16 -> Builder #

Buildable Int32 

Methods

build :: Int32 -> Builder #

Buildable Int64 

Methods

build :: Int64 -> Builder #

Buildable Integer 

Methods

build :: Integer -> Builder #

Buildable Word 

Methods

build :: Word -> Builder #

Buildable Word8 

Methods

build :: Word8 -> Builder #

Buildable Word16 

Methods

build :: Word16 -> Builder #

Buildable Word32 

Methods

build :: Word32 -> Builder #

Buildable Word64 

Methods

build :: Word64 -> Builder #

Buildable WordPtr 

Methods

build :: WordPtr -> Builder #

Buildable IntPtr 

Methods

build :: IntPtr -> Builder #

Buildable Builder 

Methods

build :: Builder -> Builder #

Buildable Text 

Methods

build :: Text -> Builder #

Buildable Text 

Methods

build :: Text -> Builder #

Buildable LocalTime 

Methods

build :: LocalTime -> Builder #

Buildable ZonedTime 

Methods

build :: ZonedTime -> Builder #

Buildable TimeOfDay 

Methods

build :: TimeOfDay -> Builder #

Buildable TimeZone 

Methods

build :: TimeZone -> Builder #

Buildable UTCTime 

Methods

build :: UTCTime -> Builder #

Buildable NominalDiffTime 
Buildable Day 

Methods

build :: Day -> Builder #

Buildable UniversalTime 
Buildable DiffTime 

Methods

build :: DiffTime -> Builder #

Buildable [Char] 

Methods

build :: [Char] -> Builder #

Buildable a => Buildable (Maybe a) 

Methods

build :: Maybe a -> Builder #

(Integral a, Buildable a) => Buildable (Ratio a) 

Methods

build :: Ratio a -> Builder #

Buildable (Ptr a) 

Methods

build :: Ptr a -> Builder #

Integral a => Buildable (Hex a) 

Methods

build :: Hex a -> Builder #

Show a => Buildable (Shown a) 

Methods

build :: Shown a -> Builder #