h1.  ANSI Wadler/Leijen Pretty Printer

You can help improve this README with extra snippets and advice by using the "GitHub wiki":http://github.com/batterseapower/ansi-wl-pprint/wikis/readme.


h2. Installing

To just install the library:

<pre>
<code>runghc Setup.lhs configure
runghc Setup.lhs build
sudo runghc Setup.lhs install</code>
</pre>

If you want to build the example, to check it's all working:

<pre>
<code>runghc Setup.lhs configure -fexample
runghc Setup.lhs build
dist/build/ansi-wl-pprint-example/ansi-wl-pprint-example</code>
</pre>


h2. Description

A pretty printing library based on Wadler's paper "A Prettier Printer". It has been enhanced with support for ANSI terminal colored output using the "ansi-terminal":http://github.com/batterseapower/ansi-terminal package.

This package is extensively based on Daan Leijen's excellent "wl-pprint":http://hackage.haskell.org/cgi-bin/hackage-scripts/package/wl-pprint library.


h2. Example

A full example is provided with the package, and can be compiled by suppling Cabal with the @-fexample@ flag. It is also available online at "GitHub":http://github.com/batterseapower/ansi-wl-pprint/tree/master/Text/PrettyPrint/ANSI/Example.hs.


h2. Manual

The library provides the obvious API, which just allows colorization of any @Doc@ value. It looks something like this:

<pre>
<code>-- | Displays a document with the given forecolor
black, red, green, yellow, blue, magenta, cyan, white,
  dullblack, dullred, dullgreen, dullyellow,
  dullblue, dullmagenta, dullcyan, dullwhite :: Doc -> Doc
 
-- | Displays a document with a forecolor given in the first parameter
color, dullcolor :: Color -> Doc -> Doc 

-- | Displays a document with the given backcolor
onblack, onred, ongreen, onyellow, onblue, onmagenta, oncyan, onwhite,
  ondullblack, ondullred, ondullgreen, ondullyellow,
  ondullblue, ondullmagenta, ondullcyan, ondullwhite :: Doc -> Doc
 
-- | Displays a document with a backcolor given in the first parameter
oncolor, ondullcolor :: Color -> Doc -> Doc</code>
</pre>

The @putDoc@ and @hPutDoc@ functions are fully portable between Windows and Unix-like operating systems with ANSI terminals.

If you output @Doc@ via a @String@ (i.e. using @show@), no colored text will be displayed on Windows, though it will work fine on Unix. This is to due to a technical limitation on how ANSI colors are implemented on Windows consoles.

h2. Linkage

* "Hackage":http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ansi-wl-pprint/
* "Bug Tracker":http://bsp.lighthouseapp.com/projects/16293-hs-ansi-wl-pprint/
* "GitHub":http://github.com/batterseapower/ansi-wl-pprint/