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