|
Text.PrettyPrint.HughesPJ | Portability | portable | Stability | provisional | Maintainer | libraries@haskell.org |
|
|
|
|
|
Description |
John Hughes's and Simon Peyton Jones's Pretty Printer Combinators
Based on The Design of a Pretty-printing Library
in Advanced Functional Programming,
Johan Jeuring and Erik Meijer (eds), LNCS 925
http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps
Heavily modified by Simon Peyton Jones, Dec 96
|
|
Synopsis |
|
|
|
|
The document type
|
|
data Doc |
The abstract type of documents
| Instances | |
|
|
Primitive Documents
|
|
empty :: Doc |
An empty document
|
|
semi :: Doc |
A ';' character
|
|
comma :: Doc |
A ',' character
|
|
colon :: Doc |
A ':' character
|
|
space :: Doc |
A space character
|
|
equals :: Doc |
A '=' character
|
|
lparen :: Doc |
A '(' character
|
|
rparen :: Doc |
A ')' character
|
|
lbrack :: Doc |
A '[' character
|
|
rbrack :: Doc |
A ']' character
|
|
lbrace :: Doc |
A '{' character
|
|
rbrace :: Doc |
A '}' character
|
|
Converting values into documents
|
|
text :: String -> Doc |
|
char :: Char -> Doc |
|
ptext :: String -> Doc |
|
int :: Int -> Doc |
|
integer :: Integer -> Doc |
|
float :: Float -> Doc |
|
double :: Double -> Doc |
|
rational :: Rational -> Doc |
|
Wrapping documents in delimiters
|
|
parens :: Doc -> Doc |
Wrap document in (...)
|
|
brackets :: Doc -> Doc |
Wrap document in [...]
|
|
braces :: Doc -> Doc |
Wrap document in {...}
|
|
quotes :: Doc -> Doc |
Wrap document in '...'
|
|
doubleQuotes :: Doc -> Doc |
Wrap document in "..."
|
|
Combining documents
|
|
(<>) :: Doc -> Doc -> Doc |
Beside
|
|
(<+>) :: Doc -> Doc -> Doc |
Beside, separated by space
|
|
hcat :: [Doc] -> Doc |
List version of <>
|
|
hsep :: [Doc] -> Doc |
List version of <+>
|
|
($$) :: Doc -> Doc -> Doc |
Above; if there is no
overlap it "dovetails" the two
|
|
($+$) :: Doc -> Doc -> Doc |
Above, without dovetailing.
|
|
vcat :: [Doc] -> Doc |
List version of $$
|
|
sep :: [Doc] -> Doc |
Either hsep or vcat
|
|
cat :: [Doc] -> Doc |
Either hcat or vcat
|
|
fsep :: [Doc] -> Doc |
"Paragraph fill" version of sep
|
|
fcat :: [Doc] -> Doc |
"Paragraph fill" version of cat
|
|
nest :: Int -> Doc -> Doc |
Nested
|
|
hang :: Doc -> Int -> Doc -> Doc |
hang d1 n d2 = sep [d1, nest n d2] |
|
punctuate :: Doc -> [Doc] -> [Doc] |
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn] |
|
Predicates on documents
|
|
isEmpty :: Doc -> Bool |
Returns True if the document is empty
|
|
Rendering documents
|
|
Default rendering
|
|
render :: Doc -> String |
Renders the document as a string using the default style
|
|
Rendering with a particular style
|
|
data Style |
A rendering style
| Constructors | Style | | mode :: Mode | The rendering mode
| lineLength :: Int | Length of line, in chars
| ribbonsPerLine :: Float | Ratio of ribbon length to line length
|
|
|
|
|
style :: Style |
The default style (mode=PageMode, lineLength=100, ribbonsPerLine=1.5)
|
|
renderStyle :: Style -> Doc -> String |
Render the document as a string using a specified style
|
|
General rendering
|
|
fullRender |
:: Mode | Rendering mode
| -> Int | Line length
| -> Float | Ribbons per line
| -> (TextDetails -> a -> a) | What to do with text
| -> a | What to do at the end
| -> Doc | The document
| -> a | Result
| The general rendering interface
|
|
|
data Mode |
Rendering mode
| Constructors | PageMode | Normal
| ZigZagMode | With zig-zag cuts
| LeftMode | No indentation, infinitely long lines
| OneLineMode | All on one line
|
|
|
|
data TextDetails |
|
|
Produced by Haddock version 0.7 |