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


-- | Implementation of interpolated multiline strings
--   
--   Implementation of interpolated multiline strings that ignores
--   indentation and trailing whitespaces
@package qm-interpolated-string
@version 0.3.0.0

module Text.InterpolatedString.QM.ShowQ.Class
class ShowQ a
showQ :: ShowQ a => a -> String
instance Text.InterpolatedString.QM.ShowQ.Class.ShowQ GHC.Types.Char
instance Text.InterpolatedString.QM.ShowQ.Class.ShowQ GHC.Base.String
instance Text.InterpolatedString.QM.ShowQ.Class.ShowQ Data.ByteString.Internal.ByteString
instance Text.InterpolatedString.QM.ShowQ.Class.ShowQ Data.ByteString.Lazy.Internal.ByteString
instance Text.InterpolatedString.QM.ShowQ.Class.ShowQ Data.Text.Internal.Text
instance Text.InterpolatedString.QM.ShowQ.Class.ShowQ Data.Text.Internal.Lazy.Text
instance GHC.Show.Show a => Text.InterpolatedString.QM.ShowQ.Class.ShowQ a

module Text.InterpolatedString.QM

-- | QuasiQuoter for multiline interpolated string.
--   
--   <pre>
--   [<a>qm</a>| foo {'b':'a':'r':""}
--      \ baz |] -- "foo bar baz"
--   </pre>
--   
--   Symbols that could be escaped:
--   
--   <ul>
--   <li><tt>\</tt> - backslash itself (two backslashes one by one:
--   <tt>\\</tt>) <tt>[<a>qm</a>| foo\\bar |] -- "foo\\bar"</tt></li>
--   <li>Space symbol at the edge (to put it to the output instead of just
--   ignoring it) <tt>[<a>qm</a>| foo\ |] -- "foo "</tt> or
--   <tt>[<a>qm</a>|\ foo |] -- " foo"</tt></li>
--   <li>Line break <tt>\n</tt> (actual line breaks are ignored)</li>
--   <li>Opening bracket of interpolation block <tt>\{</tt> to prevent
--   interpolation and put it as it is <tt>[<a>qm</a>| {1+2} \{3+4} |] --
--   "3 {3+4}"</tt></li>
--   </ul>
qm :: QuasiQuoter

-- | Works just like <a>qm</a> but without interpolation (just multiline
--   string with decorative indentation).
--   
--   <pre>
--   [<a>qn</a>| foo {'b':'a':'r':""}
--      \ baz |] -- "foo {'b':'a':'r':\"\"} baz"
--   </pre>
--   
--   Interpolation blocks goes just as text:
--   
--   <pre>
--   [<a>qn</a>| {1+2} \{3+4} |] -- "{1+2} \\{3+4}"
--   </pre>
qn :: QuasiQuoter

-- | <a>qm</a> + <tt>b</tt> (line-<i>B</i>reaks)
--   
--   <pre>
--   [<a>qmb</a>| foo
--         {'b':'a':'r':""}
--         baz |] -- "foo\nbar\nbaz"
--   </pre>
--   
--   Keep in mind that this example:
--   
--   <pre>
--   [<a>qmb</a>|
--     foo
--     bar
--   |]
--   </pre>
--   
--   Won't produce <tt>"foo\nbar\n"</tt> nor <tt>"\nfor\nbar\n"</tt> but
--   <tt>"foo\nbar"</tt>, it means it separates "between" the lines not by
--   edges.
qmb :: QuasiQuoter

-- | <a>qn</a> + <tt>b</tt> (line-<i>B</i>reaks) Works just like <a>qmb</a>
--   but without interpolation.
--   
--   <pre>
--   [<a>qnb</a>| foo
--         {'b':'a':'r':""}
--         baz |] -- "foo\n{'b':'a':'r':\"\"}\nbaz"
--   </pre>
--   
--   Keep in mind that this example:
--   
--   <pre>
--   [<a>qnb</a>|
--     foo
--     bar
--   |]
--   </pre>
--   
--   Won't produce <tt>"foo\nbar\n"</tt> nor <tt>"\nfor\nbar\n"</tt> but
--   <tt>"foo\nbar"</tt>, it means it separates "between" the lines not by
--   edges.
qnb :: QuasiQuoter

-- | <a>qm</a> + <tt>s</tt> (<i>S</i>paces)
--   
--   <pre>
--   [<a>qms</a>| foo
--         {'b':'a':'r':""}
--         baz |] -- "foo bar baz"
--   </pre>
--   
--   Keep in mind that this example:
--   
--   <pre>
--   [<a>qms</a>|
--     foo
--     bar
--   |]
--   </pre>
--   
--   Won't produce <tt>"foo bar "</tt> nor <tt>" for bar "</tt> but
--   <tt>"foo bar"</tt>, it means it separates "between" the lines not by
--   edges.
qms :: QuasiQuoter

-- | <a>qn</a> + <tt>s</tt> (<i>S</i>paces)
--   
--   Works just like <a>qms</a> but without interpolation.
--   
--   <pre>
--   [<a>qns</a>| foo
--         {'b':'a':'r':""}
--         baz |] -- "foo {'b':'a':'r':\"\"} baz"
--   </pre>
--   
--   Keep in mind that this example:
--   
--   <pre>
--   [<a>qns</a>|
--     foo
--     bar
--   |]
--   </pre>
--   
--   Won't produce <tt>"foo bar "</tt> nor <tt>" for bar "</tt> but
--   <tt>"foo bar"</tt>, it means it separates "between" the lines not by
--   edges.
qns :: QuasiQuoter
class ShowQ a
showQ :: ShowQ a => a -> String
