formatting-5.4: 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 Text Source

Output a lazy text.

stext :: Format Text Source

Output a strict text.

string :: Format String Source

Output a string.

shown :: Show a => Format a 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 Char Source

Output a character.

builder :: Format Builder Source

Build a builder.

fconst :: Builder -> Format a Source

Like const but for formatters.

Numbers

int :: Integral a => Format a Source

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

float :: Real a => Format a Source

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

expt :: Real a => Int -> Format a 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 a Source

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

prec :: Real a => Int -> Format a 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 Scientific Source

Render a scientific number.

scifmt :: FPFormat -> Maybe Int -> Format Scientific Source

Render a scientific number with options.

shortest :: Real a => Format a Source

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

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

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

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

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

ords :: Integral n => Format n Source

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

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

English plural suffix for an integral.

asInt :: Enum a => Format a 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 a 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 a 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 a 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 a Source

Fit in the given length, truncating on the left.

fitRight :: Buildable a => Int -> Format a Source

Fit in the given length, truncating on the right.

Bases

base :: Integral a => Int -> Format a Source

Render an integral at base n.

bin :: Integral a => Format a Source

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

oct :: Integral a => Format a Source

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

hex :: Integral a => Format a Source

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

prefixBin :: Integral a => Format a Source

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

prefixOct :: Integral a => Format a Source

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

prefixHex :: Integral a => Format a Source

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

Buildables

build :: Buildable a => Format a Source

Build anything that implements the Buildable class.