The basic data type. A box has a specified size and some sort of contents.
Moduleboxes-0.1.5Haskell98
Text.PrettyPrint.Boxes
A pretty-printing library for laying out text in two dimensions, using a simple box model.
- 2 types
- 33 values
- Packageboxes-0.1.5
- Exports35
- LanguageHaskell98
- LicenceBSD-3-Clause
- SourceBoxes.hs
Constructing boxes
7 declarationsThe null box, which has no content and no size. It is quite useless.
emptyBox r c is an empty box with r rows and c columns.
Useful for effecting more fine-grained positioning of other
boxes, by inserting empty boxes of the desired size in between
them.
A 1x1 box containing a single character.
A (1 x len) box containing a string of length len.
para algn w t is a box of width w, containing text t,
aligned according to algn, flowed to fit within the given
width.
columns w h t is a list of boxes, each of width w and height
at most h, containing text t flowed into as many columns as
necessary.
Layout of boxes
10 declarationsPaste two boxes together horizontally, using a default (top) alignment.
Paste two boxes together horizontally with a single intervening column of space, using a default (top) alignment.
Glue a list of boxes together horizontally, with the given alignment.
hsep sep a bs lays out bs horizontally with alignment a,
with sep amount of space in between each.
Paste two boxes together vertically, using a default (left) alignment.
Paste two boxes together vertically with a single intervening row of space, using a default (left) alignment.
Glue a list of boxes together vertically, with the given alignment.
vsep sep a bs lays out bs vertically with alignment a,
with sep amount of space in between each.
punctuateH a p bs horizontally lays out the boxes bs with a
copy of p interspersed between each.
A vertical version of punctuateH.
Alignment
14 declarationsData type for specifying the alignment of boxes.
Align boxes to the left.
Align boxes to the right.
Align boxes along their tops.
Align boxes along their bottoms.
Align boxes centered, but biased to the left/top in case of unequal parities.
Align boxes centered, but biased to the right/bottom in case of unequal parities.
Move a box left by putting it in a larger box with extra columns, aligned left. Note that the name of this function is something of a white lie, as this will only result in the box being moved left by the specified amount if it is already in a larger right-aligned context.
Move a box right by putting it in a larger box with extra columns, aligned right. See the disclaimer for moveLeft.
Move a box "up" by putting it in a larger box with extra rows, aligned to the top. See the disclaimer for moveLeft.
Move a box down by putting it in a larger box with extra rows, aligned to the bottom. See the disclaimer for moveLeft.
alignHoriz algn n bx creates a box of width n, with the
contents and height of bx, horizontally aligned according to
algn.
alignVert algn n bx creates a box of height n, with the
contents and width of bx, vertically aligned according to
algn.
align ah av r c bx creates an r x c box with the contents
of bx, aligned horizontally according to ah and vertically
according to av.
Inspecting boxes
2 declarationsRendering boxes
2 declarationsRender a Box as a String, suitable for writing to the screen or a file.
A convenience function for rendering a box to stdout.