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

Safe HaskellSafe
LanguageHaskell2010

Data.Text.Prettyprint.Doc.Util

Description

Frequently useful definitions for working with general prettyprinters.

Synopsis

Documentation

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

Split an input into word-sized Docs.

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