Copyright | (c) William Yao 2019-2020 |
---|---|
License | BSD-3 |
Maintainer | williamyaoh@gmail.com |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
This module provides two quasiquoters, i
and iii
, which:
- handle all of String/Text/ByteString, both strict and lazy
- can interpolate into anything that implements
IsString
- can interpolate anything that implements
Show
- are Unicode aware
- are fast
- handle multiline strings
i
leaves newlines and whitespace intact as they are in the source code,
while iii
collapses newlines/whitespace into single spaces, stripping
leading/trailing whitespace as well.
As an example,
{-# LANGUAGE OverloadedStrings #-} import Data.Text import Data.String.Interpolate ( i ) λ> age = 33 :: Int λ> name = "Tatiana" :: Text λ> [i|{"name": "#{name}", "age": #{age}}|] :: String >>> "{\"name\": \"Tatiana\", \"age\": 33}" λ> [i| Name: #{name} Age: #{age} |] :: String >>> "\nName: Tatiana\nAge: 33\n"
See the README at https://gitlab.com/williamyaoh/string-interpolate/blob/master/README.md for more details and examples.