The qm-interpolated-string package

[Tags:library, public-domain, test]

Implementation of interpolated multiline strings that ignores indentation and trailing whitespaces


[Skip to Readme]

Properties

Versions 0.1.0.0
Dependencies base (==4.*), bytestring (==0.10.*), haskell-src-meta (>=0.3 && <0.8), template-haskell (>=2.5 && <3), text (==1.*) [details]
License PublicDomain
Copyright Viacheslav Lotsmanov
Author Viacheslav Lotsmanov
Maintainer Viacheslav Lotsmanov <lotsmanov89@gmail.com>
Category Data
Home page https://github.com/unclechu/haskell-qm-interpolated-string
Source repository head: git clone git://github.com/unclechu/haskell-qm-interpolated-string.git
Uploaded Wed Mar 8 19:53:52 UTC 2017 by unclechu
Distributions NixOS:0.1.0.0
Downloads 29 total (8 in the last 30 days)
Votes
0 []
Status Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for qm-interpolated-string

Readme for qm-interpolated-string-0.1.0.0

[qm|interpolated-string|]

Hackage Build Status

Implementation of interpolated multiline strings that ignores indentation and trailing whitespaces.

It's QuasiQuoter.

Actually it's modification of interpolatedstring-perl6 package. I used it to implemenent my own strings I really like.

This implementation looks just like qc from interpolatedstring-perl6 package but ignores any indentation, line-breaks (except explicitly written using \n char) and trailing whitespaces.

'm' in 'qm' means 'multiline'.

You could write a decoratively formatted string and your decorative indentation and line-breaks wont go to the string, but when you really need it, you could just escape it using backslash.

Simple usage example

{-# LANGUAGE QuasiQuotes #-}

import Text.InterpolatedString.QM (qm)

main :: IO ()
main = putStrLn [qm| hello
                   \ world |]

More examples

[qm|   hello world,
     \ what's going on here?  |]
-- Result: "hello world, what's going on here?"
[qm|
      it's actual
      ly ignored
   |]
-- Result: "it's actually ignored"
[qm|  \  You could explicitly escape indentation or\n
         line-breaks when you really need it!  \
   |]
-- Result: "  You could explicitly escape indentation or\nline-breaks when you really need it!  "
[qm| {1+2} \{3+4} |]
-- Result: "3 {3+4}"

Author

Viacheslav Lotsmanov

License

The Unlicense