| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Fmt.Internal.Template
Description
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 42 + 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.
Constructors
| Format | |
Fields
| |
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 # | |