| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Test.Framework.Pretty
Description
This module defines the Pretty type class. The assert functions
from HUnitWrapper use the pretty-printing functionality
provided by this type class so as to provide nicely formatted
error messages.
Additionally, this module re-exports the standard Haskell pretty-printing module
PrettyPrint
Synopsis
- class Pretty a where
- pretty :: a -> Doc
- prettyList :: [a] -> Doc
- showPretty :: a -> String
- (<=>) :: Doc -> Doc -> Doc
- data Mode
- data Style = Style {
- mode :: Mode
- lineLength :: Int
- ribbonsPerLine :: Float
- style :: Style
- fullRender :: Mode -> Int -> Float -> (TextDetails -> a -> a) -> a -> Doc -> a
- renderStyle :: Style -> Doc -> String
- render :: Doc -> String
- fsep :: [Doc] -> Doc
- fcat :: [Doc] -> Doc
- cat :: [Doc] -> Doc
- sep :: [Doc] -> Doc
- (<+>) :: Doc -> Doc -> Doc
- ($+$) :: Doc -> Doc -> Doc
- ($$) :: Doc -> Doc -> Doc
- punctuate :: Doc -> [Doc] -> [Doc]
- hang :: Doc -> Int -> Doc -> Doc
- nest :: Int -> Doc -> Doc
- vcat :: [Doc] -> Doc
- hsep :: [Doc] -> Doc
- hcat :: [Doc] -> Doc
- braces :: Doc -> Doc
- brackets :: Doc -> Doc
- parens :: Doc -> Doc
- doubleQuotes :: Doc -> Doc
- quotes :: Doc -> Doc
- rational :: Rational -> Doc
- double :: Double -> Doc
- float :: Float -> Doc
- integer :: Integer -> Doc
- int :: Int -> Doc
- rbrace :: Doc
- lbrace :: Doc
- rbrack :: Doc
- lbrack :: Doc
- rparen :: Doc
- lparen :: Doc
- equals :: Doc
- space :: Doc
- colon :: Doc
- comma :: Doc
- semi :: Doc
- isEmpty :: Doc -> Bool
- empty :: Doc
- zeroWidthText :: String -> Doc
- sizedText :: Int -> String -> Doc
- ptext :: String -> Doc
- text :: String -> Doc
- char :: Char -> Doc
- data Doc
- data TextDetails
Documentation
A type class for pretty-printable things.
Minimal complete definition: pretty.
Minimal complete definition
Methods
Pretty-print a single value.
prettyList :: [a] -> Doc Source #
Pretty-print a list of things.
showPretty :: a -> String Source #
Pretty-print a single value as a String.
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))) | |
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)))) | |
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.
renderStyle :: Style -> Doc -> String #
Render the Doc to a String using the given Style.
($$) :: Doc -> Doc -> Doc infixl 5 #
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
therepunctuate :: Doc -> [Doc] -> [Doc] #
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
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 <>.
zeroWidthText :: String -> Doc #
Some text, but without any width. Use for non-printing text such as a HTML or Latex tags
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.
data TextDetails #
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. |