| Haskell Hierarchical Libraries (base package) | Contents | Index
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
data Doc
empty :: Doc
semi :: Doc
comma :: Doc
colon :: Doc
space :: Doc
equals :: Doc
lparen :: Doc
rparen :: Doc
lbrack :: Doc
rbrack :: Doc
lbrace :: Doc
rbrace :: Doc
text :: String -> Doc
char :: Char -> Doc
ptext :: String -> Doc
int :: Int -> Doc
integer :: Integer -> Doc
float :: Float -> Doc
double :: Double -> Doc
rational :: Rational -> Doc
parens :: Doc -> Doc
brackets :: Doc -> Doc
braces :: Doc -> Doc
quotes :: Doc -> Doc
doubleQuotes :: Doc -> Doc
(<>) :: Doc -> Doc -> Doc
(<+>) :: Doc -> Doc -> Doc
hcat :: [Doc] -> Doc
hsep :: [Doc] -> Doc
($$) :: Doc -> Doc -> Doc
($+$) :: Doc -> Doc -> Doc
vcat :: [Doc] -> Doc
sep :: [Doc] -> Doc
cat :: [Doc] -> Doc
fsep :: [Doc] -> Doc
fcat :: [Doc] -> Doc
nest :: Int -> Doc -> Doc
hang :: Doc -> Int -> Doc -> Doc
punctuate :: Doc -> [Doc] -> [Doc]
isEmpty :: Doc -> Bool
render :: Doc -> String
data Style = Style {
mode :: Mode
lineLength :: Int
ribbonsPerLine :: Float
}
style :: Style
renderStyle :: Style -> Doc -> String
fullRender :: Mode -> Int -> Float -> (TextDetails -> a -> a) -> a -> Doc -> a
data Mode
= PageMode
| ZigZagMode
| LeftMode
| OneLineMode
data TextDetails
= Chr Char
| Str String
| PStr String
The document type
data Doc
The abstract type of documents
Instances
Show Doc
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
Constructors
Chr Char |
Str String |
PStr String |
Produced by Haddock version 0.7