interpolate 0.0.1 → 0.0.2
raw patch · 3 files changed
+51/−2 lines, 3 filesdep +doctest
Dependencies added: doctest
Files
- interpolate.cabal +14/−1
- src/Data/String/Interpolate.hs +31/−1
- test/doctests.hs +6/−0
interpolate.cabal view
@@ -1,5 +1,5 @@ name: interpolate-version: 0.0.1+version: 0.0.2 license: MIT license-file: LICENSE copyright: (c) 2013 Simon Hengel@@ -51,3 +51,16 @@ , hspec >= 1.5 , QuickCheck , quickcheck-instances++test-suite doctests+ type:+ exitcode-stdio-1.0+ ghc-options:+ -Wall -Werror+ hs-source-dirs:+ test+ main-is:+ doctests.hs+ build-depends:+ base == 4.*+ , doctest == 0.9.*
src/Data/String/Interpolate.hs view
@@ -1,5 +1,14 @@ {-# LANGUAGE TemplateHaskell #-}-module Data.String.Interpolate (i) where+module Data.String.Interpolate (+-- * String interpolation done right+-- |+-- The examples in this module use `QuasiQuotes`. Make sure to enable the+-- corresponding language extension.+--+-- >>> :set -XQuasiQuotes+-- >>> import Data.String.Interpolate+ i+) where import Language.Haskell.TH.Quote (QuasiQuoter(..)) import Language.Haskell.Meta.Parse.Careful (parseExp)@@ -8,6 +17,27 @@ import Data.String.Interpolate.Parse import Data.String.Interpolate.Compat (Q, Exp, appE, reportError) +-- |+-- A `QuasiQuoter` for string interpolation. Expression enclosed within+-- @#{...}@ are interpolated, the result has to be in the `Show` class.+--+-- It interpolates strings+--+-- >>> let name = "Marvin"+-- >>> putStrLn [i|name: #{name}|]+-- name: Marvin+--+-- or integers+--+-- >>> let age = 23+-- >>> putStrLn [i|age: #{age}|]+-- age: 23+--+-- or arbitrary Haskell expressions+--+-- >>> let profession = "\955-scientist"+-- >>> putStrLn [i|profession: #{unwords [name, "the", profession]}|]+-- profession: Marvin the λ-scientist i :: QuasiQuoter i = QuasiQuoter { quoteExp = toExp . parseNodes
+ test/doctests.hs view
@@ -0,0 +1,6 @@+module Main where++import Test.DocTest++main :: IO ()+main = doctest ["-isrc", "-optP-include", "-optPdist/build/autogen/cabal_macros.h", "src/Data/String/Interpolate.hs"]