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


-- | Compile time string interpolation a la Scala and CoffeeScript
--   
--   The documentation can be found on readthedocs
--   <a>https://marvin.readthedocs.io/en/latest/interpolation.html</a>
@package marvin-interpolate
@version 1.1.2


-- | Please refer to the documentation at
--   <a>https://marvin.readthedocs.io/en/latest/interpolation.html</a> for
--   examples and explanations on how to use this library.
module Marvin.Interpolate

-- | <b>i</b>nterpolate <b>s</b>plice
--   
--   Template Haskell splice function, used like <tt>$(is "my str
--   #{expr}")</tt>
--   
--   Performs no conversion on interpolated expressions like <tt>expr</tt>.
is :: String -> Q Exp

-- | <b>i</b>nterpolate <b>q</b>uoter
--   
--   QuasiQuoter, used like <tt>[iq|my str #{expr}|]</tt>
--   
--   Performs no conversion on interpolated expressions like <tt>expr</tt>.
iq :: QuasiQuoter

-- | Common core of all interpolators.
--   
--   <tt>interpolateInto exp str</tt> parses <tt>str</tt> as the
--   interpolated string and returns an <a>Exp</a> which looks like
--   
--   <pre>
--   "str" `mappend` exp1 `mappend` "str" `mappend` exp2 `mappend` "str"
--   </pre>
--   
--   where <tt>exp1</tt> and <tt>exp2</tt> are the interpolated expressions
--   with <tt>exp</tt> prepended. The intended use of <tt>exp</tt> is to
--   unifomly convert the interpolated expressions into a desired string
--   type. Typically <tt>exp</tt> will be something like <tt>(<a>VarE</a>
--   'convert)</tt> were <tt>convert</tt> is some member function of a
--   conversion type class.
interpolateInto :: Exp -> String -> Exp


-- | Please refer to the documentation at
--   <a>https://marvin.readthedocs.io/en/latest/interpolation.html</a> for
--   examples and explanations on how to use this library.
module Marvin.Interpolate.Text.Lazy

-- | <b>i</b>nterpolate <b>s</b>plice to <b>L</b>azy Text
--   
--   Template Haskell splice function, used like <tt>$(isL "my str
--   #{expr}")</tt>
--   
--   converts all expressions to <a>Text</a> by calling <a>showL</a> on the
--   result.
isL :: String -> Q Exp

-- | <b>i</b>nterpolate <b>q</b>uoter to <b>L</b>azy Text
--   
--   QuasiQuoter, used like <tt>[iqL|my str #{expr}|]</tt>
--   
--   converts all expressions to <a>Text</a> by calling <a>showL</a> on the
--   result.
iqL :: QuasiQuoter

-- | A type class for converting things to <a>Text</a>
--   
--   Leaves string likes (<a>String</a>, <a>Text</a> and <a>Text</a>)
--   unchanged, tries <a>Show</a> (overlappable) on all others.
class ShowL a
showL :: ShowL a => a -> Text
instance Marvin.Interpolate.Text.Lazy.ShowL a => Marvin.Interpolate.Text.Lazy.ShowL [a]
instance Marvin.Interpolate.Text.Lazy.ShowL Data.Text.Internal.Lazy.Text
instance Marvin.Interpolate.Text.Lazy.ShowL Data.Text.Internal.Text
instance Marvin.Interpolate.Text.Lazy.ShowL GHC.Types.Char
instance GHC.Show.Show a => Marvin.Interpolate.Text.Lazy.ShowL a


-- | Please refer to the documentation at
--   <a>https://marvin.readthedocs.io/en/latest/interpolation.html</a> for
--   examples and explanations on how to use this library.
module Marvin.Interpolate.Text

-- | <b>i</b>nterpolate <b>s</b>plice to <b>T</b>ext
--   
--   Template Haskell splice function, used like <tt>$(isT "my str
--   #{expr}")</tt>
--   
--   converts all expressions to <a>Text</a> by calling <a>showT</a> on the
--   result.
isT :: String -> Q Exp

-- | <b>i</b>nterpolate <b>q</b>uoter to <b>T</b>ext
--   
--   QuasiQuoter, used like <tt>[iqT|my str #{expr}|]</tt>
--   
--   converts all expressions to <a>Text</a> by calling <a>showT</a> on the
--   result.
iqT :: QuasiQuoter

-- | A type class for converting things to <a>Text</a>
--   
--   Leaves string likes (<a>String</a>, <a>Text</a> and <a>Text</a>)
--   unchanged, tries <a>Show</a> (overlappable) on all others.
class ShowT a
showT :: ShowT a => a -> Text
instance Marvin.Interpolate.Text.ShowT a => Marvin.Interpolate.Text.ShowT [a]
instance Marvin.Interpolate.Text.ShowT Data.Text.Internal.Text
instance Marvin.Interpolate.Text.ShowT Data.Text.Internal.Lazy.Text
instance Marvin.Interpolate.Text.ShowT GHC.Types.Char
instance GHC.Show.Show a => Marvin.Interpolate.Text.ShowT a


-- | Please refer to the documentation at
--   <a>https://marvin.readthedocs.io/en/latest/interpolation.html</a> for
--   examples and explanations on how to use this library.
module Marvin.Interpolate.String

-- | <b>i</b>nterpolate <b>s</b>plice to <b>S</b>tring
--   
--   Template Haskell splice function, used like <tt>$(isS "my str
--   #{expr}")</tt>
--   
--   converts all expressions to <a>String</a> by calling <a>showStr</a> on
--   the result.
isS :: String -> Q Exp

-- | <b>i</b>nterpolate <b>q</b>uoter to <b>S</b>tring
--   
--   QuasiQuoter, used like <tt>[iqS|my str #{expr}|]</tt>
--   
--   converts all expressions to <a>String</a> by calling <a>showStr</a> on
--   the result.
iqS :: QuasiQuoter

-- | A type class for converting things to <a>String</a>
--   
--   Leaves string likes (<a>String</a>, <a>Text</a> and <a>Text</a>)
--   unchanged, and tries <a>Show</a> (overlappable) on all others.
class ShowStr a
showStr :: ShowStr a => a -> String
instance Marvin.Interpolate.String.ShowStr GHC.Types.Char
instance Marvin.Interpolate.String.ShowStr a => Marvin.Interpolate.String.ShowStr [a]
instance Marvin.Interpolate.String.ShowStr Data.Text.Internal.Text
instance Marvin.Interpolate.String.ShowStr Data.Text.Internal.Lazy.Text
instance GHC.Show.Show a => Marvin.Interpolate.String.ShowStr a


-- | Please refer to the documentation at
--   <a>https://marvin.readthedocs.io/en/latest/interpolation.html</a> for
--   examples and explanations on how to use this library.
module Marvin.Interpolate.All
