groom (empty) → 0.1
raw patch · 3 files changed
+51/−0 lines, 3 filesdep +basedep +haskell-src-extssetup-changed
Dependencies added: base, haskell-src-exts
Files
- Setup.hs +2/−0
- Text/Groom.hs +12/−0
- groom.cabal +37/−0
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ Text/Groom.hs view
@@ -0,0 +1,12 @@+module Text.Groom (groom, groomString) where++import Language.Haskell.Exts.Parser+import Language.Haskell.Exts.Pretty++groomString :: String -> String+groomString s = case parseExp s of+ ParseOk x -> prettyPrint x+ ParseFailed{} -> s++groom :: Show a => a -> String+groom = groomString . show
+ groom.cabal view
@@ -0,0 +1,37 @@+Name: groom+Version: 0.1+Synopsis: Slightly prettier printing for well-behaved Show+ instances.+Description: Automatically derived Show instances are an easy way+ to inspect data in your program. However, for large+ data-structures, the resulting output lacks+ whitespace, making it unreadable. Groom offers an+ replacement to `show' called `groom' which attempts+ to pretty-print the output of `show'. For example:+ .+ > let x = parseExp "foobar 1 [1,2]"+ > in do+ > putStrLn (show x)+ > putStrLn (groom x)+ .+ results in:+ .+ > ParseOk (App (App (Var (UnQual (Ident "foobar"))) (Lit (Int 1))) (List [Lit (Int 1),Lit (Int 2)]))+ > ParseOk+ > (App (App (Var (UnQual (Ident "foobar"))) (Lit (Int 1)))+ > (List [Lit (Int 1), Lit (Int 2)]))+ .+ Groom works only on Show instances that output valid+ Haskell code; if Groom can't understand its input,+ it will not make any changes.+License: PublicDomain+Author: Edward Z. Yang+Maintainer: ezyang@mit.edu+Category: Text+Build-type: Simple+Cabal-version: >=1.2++Library+ Exposed-modules: Text.Groom+ Build-depends: haskell-src-exts >= 1.0.0 && < 1.10,+ base >= 3 && < 5