darcs-2.8.1: a distributed, interactive, smart revision control system

Safe HaskellSafe-Infered

Printer

Synopsis

Documentation

data Printable Source

A Printable is either a String, a packed string, or a chunk of text with both representations.

Constructors

S !String 
PS !ByteString 
Both !String !ByteString 

newtype Doc Source

a Doc is a bit of enriched text. Docs get concatanated using <>, which is right-associative.

Constructors

Doc 

Fields

unDoc :: St -> Document
 

Instances

data Printers' Source

A set of printers to print different types of text to a handle.

Constructors

Printers 

type Printer = Printable -> St -> DocumentSource

data Color Source

Constructors

Blue 
Red 
Green 
Cyan 
Magenta 

hPutDoc :: Handle -> Doc -> IO ()Source

hputDoc puts a doc on the given handle using simplePrinters

putDoc :: Doc -> IO ()Source

putDoc puts a doc on stdout using the simple printer simplePrinters.

putDocLn :: Doc -> IO ()Source

putDocLn puts a doc, followed by a newline on stdout using simplePrinters

hPutDocWith :: Printers -> Handle -> Doc -> IO ()Source

hputDocWith puts a doc on the given handle using the given printer.

hPutDocLnWith :: Printers -> Handle -> Doc -> IO ()Source

hputDocLnWith puts a doc, followed by a newline on the given handle using the given printer.

putDocWith :: Printers -> Doc -> IO ()Source

putDocWith puts a doc on stdout using the given printer.

putDocLnWith :: Printers -> Doc -> IO ()Source

putDocLnWith puts a doc, followed by a newline on stdout using the given printer.

renderString :: Doc -> StringSource

renders a Doc into a String with control codes for the special features of the doc.

renderStringWith :: Printers' -> Doc -> StringSource

renders a Doc into a String using a given set of printers.

renderPS :: Doc -> ByteStringSource

renders a Doc into ByteString with control codes for the special features of the Doc. See also readerString.

renderPSWith :: Printers' -> Doc -> ByteStringSource

renders a doc into a ByteString using a given set of printers.

renderPSs :: Doc -> [ByteString]Source

renders a Doc into a list of PackedStrings, one for each line.

renderPSsWith :: Printers' -> Doc -> [ByteString]Source

renders a Doc into a list of PackedStrings, one for each chunk of text that was added to the doc, using the given set of printers.

colorText :: Color -> String -> DocSource

colorText creates a Doc containing colored text from a String

invisibleText :: String -> DocSource

invisibleText creates a Doc containing invisible text from a String

hiddenText :: String -> DocSource

hiddenText creates a Doc containing hidden text from a String

userchunk :: String -> DocSource

userchunk creates a Doc containing a user chunk from a String

text :: String -> DocSource

text creates a Doc from a String, using printable.

printable :: Printable -> DocSource

'printable x' creates a Doc from any Printable.

wrapText :: Int -> String -> DocSource

wrapText n s is a Doc representing s line-wrapped at n characters

blueText, cyanText, magentaText, greenText, redText :: String -> DocSource

blueText creates a Doc containing blue text from a String

unsafeText :: String -> DocSource

unsafeText creates a Doc from a String, using simplePrinter directly

unsafeBoth :: String -> ByteString -> DocSource

unsafeBoth builds a Doc from a String and a ByteString representing the same text, but does not check that they do.

unsafeBothText :: String -> DocSource

unsafeBothText builds a Doc from a String. The string is stored in the Doc as both a String and a ByteString.

unsafeChar :: Char -> DocSource

unsafeChar creates a Doc containing just one character.

invisiblePS :: ByteString -> DocSource

invisiblePS creates a Doc with invisible text from a ByteString

userchunkPS :: ByteString -> DocSource

userchunkPS creates a Doc representing a user chunk from a ByteString.

simplePrinters :: PrintersSource

simplePrinters is a Printers which uses the set 'simplePriners\'' on any handle.

invisiblePrinter :: PrinterSource

invisiblePrinter is the Printer for hidden text. It just replaces the document with empty. It's useful to have a printer that doesn't actually do anything because this allows you to have tunable policies, for example, only printing some text if it's to the terminal, but not if it's to a file or vice-versa.

simplePrinter :: PrinterSource

simplePrinter is the simplest Printer: it just concatenates together the pieces of the Doc

empty :: DocSource

The empty Doc.

(<>) :: Doc -> Doc -> DocSource

'()' is the concatenation operator for Docs

(<?>) :: Doc -> Doc -> DocSource

a <?> b is a b if a is not empty, else empty.

(<+>) :: Doc -> Doc -> DocSource

a <+> b is a followed by a space, then b.

($$) :: Doc -> Doc -> DocSource

a $$ b is a above b.

vcat :: [Doc] -> DocSource

vcat piles vertically a list of Docs.

vsep :: [Doc] -> DocSource

vsep piles vertically a list of Docs leaving a blank line between each.

hcat :: [Doc] -> DocSource

hcat concatenates (horizontally) a list of Docs

space, backslash, minus, plus, newline :: DocSource

Minimal Docs representing the common characters space, newline minus, plus, and backslash.

lparen :: DocSource

lparen is the Doc that represents "("

rparen :: DocSource

rparen is the Doc that represents ")"

parens :: Doc -> DocSource

parens doc returns a Doc with the content of doc put within a pair of parenthesis.