Copyright | (c) 2011 MailRank Inc. |
---|---|
License | BSD-style |
Maintainer | bos@serpentine.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | None |
Language | Haskell98 |
Fast, efficient, flexible support for formatting text strings.
Synopsis
- data Format
- newtype Only a = Only {
- fromOnly :: a
- newtype Shown a = Shown {
- shown :: a
- format :: Params ps => Format -> ps -> Text
- print :: (MonadIO m, Params ps) => Format -> ps -> m ()
- hprint :: (MonadIO m, Params ps) => Handle -> Format -> ps -> m ()
- build :: Params ps => Format -> ps -> Builder
- left :: Buildable a => Int -> Char -> a -> Builder
- right :: Buildable a => Int -> Char -> a -> Builder
- hex :: Integral a => a -> Builder
- expt :: Real a => Int -> a -> Builder
- fixed :: Real a => Int -> a -> Builder
- prec :: Real a => Int -> a -> Builder
- shortest :: Real a => a -> Builder
Types
A format string. This is intentionally incompatible with other string types, to make it difficult to construct a format string by concatenating string fragments (a very common way to accidentally make code vulnerable to malicious data).
This type is an instance of IsString
, so the easiest way to
construct a query is to enable the OverloadedStrings
language
extension and then simply write the query in double quotes.
{-# LANGUAGE OverloadedStrings #-} import Data.Text.Format f :: Format f = "hello {}"
The underlying type is Text
, so literal Haskell strings that
contain Unicode characters will be correctly handled.
Use this newtype
wrapper for your single parameter if you are
formatting a string containing exactly one substitution site.
Instances
Types for format control
Render a value using its Show
instance.
Instances
Rendering
print :: (MonadIO m, Params ps) => Format -> ps -> m () Source #
Render a format string and arguments, then print the result.
hprint :: (MonadIO m, Params ps) => Handle -> Format -> ps -> m () Source #
Render a format string and arguments, then print the result to the given file handle.
build :: Params ps => Format -> ps -> Builder Source #
Render a format string and arguments to a Builder
.
Format control
left :: Buildable a => Int -> Char -> a -> Builder 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 -> a -> Builder Source #
Pad the right hand side of a string until it reaches k
characters wide, if necessary filling with character c
.
Integers
hex :: Integral a => a -> Builder Source #
Render an integer using hexadecimal notation. (No leading "0x" is added.)
Floating point numbers
Render a floating point number using scientific/engineering
notation (e.g. 2.3e123
), with the given number of decimal places.
Render a floating point number using normal notation, with the given number of decimal places.
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.