|
| 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.6 |