|
Text.PrettyPrint.HughesPJ | Portability | portable | Stability | provisional | Maintainer | libraries@haskell.org |
|
|
|
|
Contents |
- The document type
- Primitive Documents
- Converting values into documents
- Wrapping documents in delimiters
- Combining documents
- Predicates on documents
- Rendering documents
- Default rendering
- Rendering with a particular style
- General rendering
|
|
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 |
|
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.4 |