-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Efficient interpolation for Prettyprinter
--   
--   This package provides efficient interpolation of
--   string-interpolate quasi quoters when used with
--   prettyprinter.
@package prettyprinter-interp
@version 0.2.0.0

-- | 
Efficient interpolation for Prettyprinter
--   
--   This module provides efficient interpolation of
--   string-interpolate quasi quoters when used with
--   prettyprinters Documents.
--   
--   The normal quasi quoters from string-interpolate do work when
--   used as a Doc. Newlines are even converted to
--   Prettyprinter.line. However, this method is
--   inefficient. The following code functions correctly:
--   
--   
--   {-# LANGUAGE OverloadedStrings #-}
--   {-# LANGUAGE QuasiQuotes #-}
--   
--   module Main where
--   
--   import Data.String.Interpolate
--   import Data.Text (Text)
--   import Prettyprinter
--   
--   f :: Text
--   f = "world"
--   
--   g :: Doc ()
--   g = [i|Hello #{f}!|]
--   
--   main :: IO ()
--   main = print g
--   
--   
--   
--   However, what happens under the hood is that f is converted
--   to String, the interpolated string is built manipulating
--   Strings, and then the output is converted to Text in
--   prettyprinter. The following code is much better:
--   
--   
--   g = pretty ([i|Hello #{f}!|] :: Text)
--   
--   
--   
--   Now, the interpolated string is constructed as Text, and this
--   is passed cleanly into Doc which also uses Text as
--   its underlying type for representation of text. At no point is
--   f converted to String, and the string construction
--   benefits from the performance of Text. And again, newlines
--   are converted to line.
--   
--   This module defines wrapper quasi quoters that automatically perform
--   the pretty invocation, and can simply be used as:
--   
--   
--   g = [di|Hello #{f}!|]
--   
--   
module Prettyprinter.Interpolate

-- | Wrapper around the i quasi quoter, producing a Doc
--   
--   Newlines in the text are converted to line.
di :: QuasiQuoter

-- | Wrapper around the __i quasi quoter, producing a Doc
--   
--   Newlines in the text are converted to line.
__di :: QuasiQuoter

-- | Wrapper around the iii quasi quoter, producing a Doc
--   
--   Newlines in the text are converted to line.
diii :: QuasiQuoter

-- | Wrapper around the __i'E quasi quoter, producing a Doc
--   
--   Newlines in the text are converted to line.
__di'E :: QuasiQuoter

-- | Wrapper around the __i'L quasi quoter, producing a Doc
--   
--   Newlines in the text are converted to line.
__di'L :: QuasiQuoter

-- | Wrapper around the iii'E quasi quoter, producing a Doc
--   
--   Newlines in the text are converted to line.
diii'E :: QuasiQuoter

-- | Wrapper around the iii'L quasi quoter, producing a Doc
--   
--   Newlines in the text are converted to line.
diii'L :: QuasiQuoter

-- | Deprecated: d__i'E is a deprecated alias for __di'E
--   and will be removed in prettyprinter-interp 0.3
d__i'E :: QuasiQuoter

-- | Deprecated: d__i'L is a deprecated alias for __di'L
--   and will be removed in prettyprinter-interp 0.3
d__i'L :: QuasiQuoter
