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, 0.1.1.0
Change log CHANGELOG.md
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 Thu Jul 13 20:44:13 UTC 2017 by unclechu
Distributions NixOS:0.1.1.0
Downloads 69 total (37 in the last 30 days)
Votes
0 []
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for qm-interpolated-string

Readme for qm-interpolated-string-0.1.1.0

[qm|interpolated-string|]

Hackage Build Status

Implementation of interpolated multiline string QuasiQuoter that ignores indentation and trailing whitespaces.

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}"

There is also very similar to qm QuasiQuoter named as qn that do the same except interpolation:

[qn| foo {1+2} |]
-- Result: "foo {1+2}"

Author

Viacheslav Lotsmanov

License

The Unlicense