packages feed

stringbuilder 0.1.0 → 0.2.0

raw patch · 3 files changed

+14/−16 lines, 3 filesdep +QuickCheckdep +hspecdep −hspec-shouldbe

Dependencies added: QuickCheck, hspec

Dependencies removed: hspec-shouldbe

Files

src/Data/String/Builder.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE GeneralizedNewtypeDeriving, GADTs #-} -- | -- `build` can be used to construct multi-line string literals in a monadic -- way.@@ -14,15 +14,11 @@ -- >   "baz" -- -- `return` and `>>=` are not useful in this context!-module Data.String.Builder (build, Builder) where+module Data.String.Builder (build, Builder, BuilderM) where -import Prelude hiding (undefined) import Data.String import Control.Monad.Trans.Writer -undefined :: a-undefined = error "Data.String.Builder.undefined"- newtype BuilderM a = BuilderM { runBuilderM :: Writer String a }   deriving Monad @@ -31,8 +27,8 @@ literal :: String -> Builder literal = BuilderM . tell -instance IsString (BuilderM a) where-  fromString s = literal s >> literal "\n" >> return undefined+instance (a ~ ()) => IsString (BuilderM a) where+  fromString s = literal s >> literal "\n" >> return ()  build :: Builder -> String build = snd . runWriter . runBuilderM
stringbuilder.cabal view
@@ -1,5 +1,5 @@ name:             stringbuilder-version:          0.1.0+version:          0.2.0 synopsis:         A monadic builder for multi-line string literals description:      <https://github.com/sol/stringbuilder#readme> category:         Testing@@ -38,4 +38,5 @@   build-depends:       base     , transformers-    , hspec-shouldbe+    , hspec         >= 1.3+    , QuickCheck
test/Spec.hs view
@@ -1,16 +1,16 @@ {-# LANGUAGE OverloadedStrings #-}-{-# OPTIONS_GHC -fno-warn-unused-do-bind #-} module Main (main, spec) where -import           Test.Hspec.ShouldBe+import           Test.Hspec+import           Test.QuickCheck  import           Data.String import           Data.String.Builder  main :: IO ()-main = hspecX spec+main = hspec spec -spec :: Specs+spec :: Spec spec = do   describe "build" $ do     it "can be used to construct multi-line string literals in a monadic way" $ do@@ -20,5 +20,6 @@         "baz"       `shouldBe` "foo\nbar\nbaz\n" -    prop "works for arbitrary input" $ do-      \l -> (build . sequence_ . map fromString) l == unlines l+    it "works for arbitrary input" $ do+      property $+        \l -> (build . sequence_ . map fromString) l == unlines l