Safe Haskell | None |
---|---|
Language | Haskell2010 |
Old-style formatting a la
text-format
.
Synopsis
- format :: ( HasCallStack , FormatType r) => Format -> r
- formatLn :: ( HasCallStack , FormatType r) => Format -> r
-
newtype
Format
=
Format
{
- fromFormat :: Text
- renderFormat :: Format -> [ Builder ] -> Builder
- zipParams :: [ Builder ] -> [ Builder ] -> Builder
- crack :: Format -> [ Builder ]
- class FormatType r where
Documentation
>>>
import Fmt
format :: ( HasCallStack , FormatType r) => Format -> r Source #
An old-style formatting function taken from
text-format
(see
Data.Text.Format
). Unlike
format
from
Data.Text.Format
, it can produce
String
and strict
Text
as well (and
print to console too). Also it's polyvariadic:
>>>
format "{} + {} = {}" 2 2 4
2 + 2 = 4
You can use arbitrary formatters:
>>>
format "0x{} + 0x{} = 0x{}" (hexF 130) (hexF 270) (hexF (130+270))
0x82 + 0x10e = 0x190
formatLn :: ( HasCallStack , FormatType r) => Format -> r Source #
Like
format
, but adds a newline.
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 Fmt f :: Format f = "hello {}"
The underlying type is
Text
, so literal Haskell strings that
contain Unicode characters will be correctly handled.
Format | |
|
Instances
Eq Format Source # | |
Ord Format Source # | |
Show Format Source # | |
IsString Format Source # | |
Defined in Fmt.Internal.Template fromString :: String -> Format Source # |
|
Semigroup Format Source # | |
Monoid Format Source # | |
renderFormat :: Format -> [ Builder ] -> Builder Source #
Render a format string and arguments to a
Builder
.
class FormatType r where Source #
Something like
PrintfType
in
Text.Printf
.
Instances
FromBuilder r => FormatType r Source # | |
( Buildable a, FormatType r) => FormatType (a -> r) Source # | |