prettyprinter-1.6.2: A modern, easy to use, well-documented, extensible pretty-printer.

Safe Haskell | Safe
Language | Haskell2010

Data.Text.Prettyprint.Doc.Util

Description

Frequently useful definitions for working with general prettyprinters.

Synopsis

- words :: Text -> [Doc ann]
- reflow :: Text -> Doc ann
- putDocW :: Int -> Doc ann -> IO ()

# Documentation

words :: Text -> [Doc ann] Source #

Split an input into word-sized `Doc`s.

    >>> putDoc (tupled (words "Lorem ipsum dolor"))
    (Lorem, ipsum, dolor)

reflow :: Text -> Doc ann Source #

Insert soft linebreaks between words, so that text is broken into multiple lines when it exceeds the available width.

    >>> putDocW 32 (reflow "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
    Lorem ipsum dolor sit amet,
    consectetur adipisicing elit,
    sed do eiusmod tempor incididunt
    ut labore et dolore magna
    aliqua.

    reflow = fillSep . words

putDocW :: Int -> Doc ann -> IO () Source #

Render a document with a certain width. Useful for quick-and-dirty testing of layout behaviour. Used heavily in the doctests of this package, for example.

    >>> let doc = reflow "Lorem ipsum dolor sit amet, consectetur adipisicing elit"
    >>> putDocW 20 doc
    Lorem ipsum dolor
    sit amet,
    consectetur
    adipisicing elit
    >>> putDocW 30 doc
    Lorem ipsum dolor sit amet,
    consectetur adipisicing elit