formatting-6.3.0: 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, Buildable 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"

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

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

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 Source #

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

Minimal complete definition

build

Instances

Buildable Bool Source # 

Methods

build :: Bool -> Builder Source #

Buildable Char Source # 

Methods

build :: Char -> Builder Source #

Buildable Double Source # 

Methods

build :: Double -> Builder Source #

Buildable Float Source # 

Methods

build :: Float -> Builder Source #

Buildable Int Source # 

Methods

build :: Int -> Builder Source #

Buildable Int8 Source # 

Methods

build :: Int8 -> Builder Source #

Buildable Int16 Source # 

Methods

build :: Int16 -> Builder Source #

Buildable Int32 Source # 

Methods

build :: Int32 -> Builder Source #

Buildable Int64 Source # 

Methods

build :: Int64 -> Builder Source #

Buildable Integer Source # 
Buildable Word Source # 

Methods

build :: Word -> Builder Source #

Buildable Word8 Source # 

Methods

build :: Word8 -> Builder Source #

Buildable Word16 Source # 

Methods

build :: Word16 -> Builder Source #

Buildable Word32 Source # 

Methods

build :: Word32 -> Builder Source #

Buildable Word64 Source # 

Methods

build :: Word64 -> Builder Source #

Buildable Void Source # 

Methods

build :: Void -> Builder Source #

Buildable WordPtr Source # 
Buildable IntPtr Source # 

Methods

build :: IntPtr -> Builder Source #

Buildable Builder Source # 
Buildable Text Source # 

Methods

build :: Text -> Builder Source #

Buildable Text Source # 

Methods

build :: Text -> Builder Source #

Buildable ZonedTime Source # 
Buildable LocalTime Source # 
Buildable TimeOfDay Source # 
Buildable TimeZone Source # 
Buildable UniversalTime Source # 
Buildable UTCTime Source # 
Buildable NominalDiffTime Source # 
Buildable DiffTime Source # 
Buildable Day Source # 

Methods

build :: Day -> Builder Source #

Buildable [Char] Source # 

Methods

build :: [Char] -> Builder Source #

Buildable a => Buildable (Maybe a) Source # 

Methods

build :: Maybe a -> Builder Source #

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

Methods

build :: Ratio a -> Builder Source #

Buildable (Ptr a) Source # 

Methods

build :: Ptr a -> Builder Source #

HasResolution a => Buildable (Fixed a) Source # 

Methods

build :: Fixed a -> Builder Source #