| Copyright | (c) The University of Glasgow 2001 | 
|---|---|
| License | BSD-style (see the file LICENSE) | 
| Maintainer | David Terei <code@davidterei.com> | 
| Stability | stable | 
| Portability | portable | 
| Safe Haskell | Safe | 
| Language | Haskell98 | 
Text.PrettyPrint
Contents
Description
Provides a collection of pretty printer combinators, a set of API's that provides a way to easily print out text in a consistent format of your choosing.
This module should be used as opposed to the HughesPJ
 module. Both are equivalent though as this module simply re-exports the
 other.
Synopsis
- data Doc
 - char :: Char -> Doc
 - text :: String -> Doc
 - ptext :: String -> Doc
 - sizedText :: Int -> String -> Doc
 - zeroWidthText :: String -> Doc
 - int :: Int -> Doc
 - integer :: Integer -> Doc
 - float :: Float -> Doc
 - double :: Double -> Doc
 - rational :: Rational -> Doc
 - semi :: Doc
 - comma :: Doc
 - colon :: Doc
 - space :: Doc
 - equals :: Doc
 - lparen :: Doc
 - rparen :: Doc
 - lbrack :: Doc
 - rbrack :: Doc
 - lbrace :: Doc
 - rbrace :: Doc
 - parens :: Doc -> Doc
 - brackets :: Doc -> Doc
 - braces :: Doc -> Doc
 - quotes :: Doc -> Doc
 - doubleQuotes :: Doc -> Doc
 - empty :: 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
 - data TextDetails
 
The document type
The abstract type of documents. A Doc represents a set of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.
Constructing documents
Converting values into documents
sizedText :: Int -> String -> Doc Source #
Some text with any width. (text s = sizedText (length s) s)
zeroWidthText :: String -> Doc Source #
Some text, but without any width. Use for non-printing text such as a HTML or Latex tags
Simple derived documents
Wrapping documents in delimiters
Combining documents
($$) :: Doc -> Doc -> Doc infixl 5 Source #
Above, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example:
text "hi" $$ nest 5 (text "there")
lays out as
hi there
rather than
   hi
        therenest :: Int -> Doc -> Doc Source #
Nest (or indent) a document by a given number of positions
 (which may also be negative).  nest satisfies the laws:
nest0 x = xnestk (nestk' x) =nest(k+k') xnestk (x<>y) =nestk x<>nestk ynestk (x$$y) =nestk x$$nestk ynestkempty=emptyx, if<>nestk y = x<>yxnon-empty
The side condition on the last law is needed because
 empty is a left identity for <>.
punctuate :: Doc -> [Doc] -> [Doc] Source #
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
Predicates on documents
Rendering documents
Default rendering
Rendering with a particular style
A rendering style. Allows us to specify constraints to choose among the many different rendering options.
Constructors
| Style | |
Fields 
  | |
Instances
| Eq Style # | |
| Show Style # | |
| Generic Style # | |
| type Rep Style # | |
Defined in Text.PrettyPrint.Annotated.HughesPJ type Rep Style = D1 (MetaData "Style" "Text.PrettyPrint.Annotated.HughesPJ" "pretty-1.1.3.6" False) (C1 (MetaCons "Style" PrefixI True) (S1 (MetaSel (Just "mode") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Mode) :*: (S1 (MetaSel (Just "lineLength") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "ribbonsPerLine") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float))))  | |
General rendering
Arguments
| :: 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. Please refer to the Style and Mode
 types for a description of rendering mode, line length and ribbons.
Rendering mode.
Constructors
| PageMode | Normal rendering (  | 
| ZigZagMode | With zig-zag cuts.  | 
| LeftMode | No indentation, infinitely long lines (  | 
| OneLineMode | All on one line,   | 
Instances
| Eq Mode # | |
| Show Mode # | |
| Generic Mode # | |
| type Rep Mode # | |
Defined in Text.PrettyPrint.Annotated.HughesPJ type Rep Mode = D1 (MetaData "Mode" "Text.PrettyPrint.Annotated.HughesPJ" "pretty-1.1.3.6" False) ((C1 (MetaCons "PageMode" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "ZigZagMode" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "LeftMode" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "OneLineMode" PrefixI False) (U1 :: Type -> Type)))  | |
data TextDetails Source #
A TextDetails represents a fragment of text that will be output at some
 point in a Doc.
Constructors
| Chr !Char | A single Char fragment  | 
| Str String | A whole String fragment  | 
| PStr String | Used to represent a Fast String fragment but now deprecated and identical to the Str constructor.  |