-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | 2D text pretty-printing library
--
-- A pretty-printing library for laying out text in two dimensions, using
-- a simple box model.
@package boxes
@version 0.1.5
-- | A pretty-printing library for laying out text in two dimensions, using
-- a simple box model.
module Text.PrettyPrint.Boxes
-- | The basic data type. A box has a specified size and some sort of
-- contents.
data Box
-- | The null box, which has no content and no size. It is quite useless.
nullBox :: Box
-- | 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.
emptyBox :: Int -> Int -> Box
-- | A 1x1 box containing a single character.
char :: Char -> Box
-- | A (1 x len) box containing a string of length len.
text :: String -> Box
-- | para algn w t is a box of width w, containing text
-- t, aligned according to algn, flowed to fit within
-- the given width.
para :: Alignment -> Int -> String -> Box
-- | 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.
columns :: Alignment -> Int -> Int -> String -> [Box]
-- | Paste two boxes together horizontally, using a default (top)
-- alignment.
(<>) :: Box -> Box -> Box
-- | Paste two boxes together horizontally with a single intervening column
-- of space, using a default (top) alignment.
(<+>) :: Box -> Box -> Box
-- | Glue a list of boxes together horizontally, with the given alignment.
hcat :: Foldable f => Alignment -> f Box -> Box
-- | hsep sep a bs lays out bs horizontally with
-- alignment a, with sep amount of space in between
-- each.
hsep :: Foldable f => Int -> Alignment -> f Box -> Box
-- | Paste two boxes together vertically, using a default (left) alignment.
(//) :: Box -> Box -> Box
-- | Paste two boxes together vertically with a single intervening row of
-- space, using a default (left) alignment.
(/+/) :: Box -> Box -> Box
-- | Glue a list of boxes together vertically, with the given alignment.
vcat :: Foldable f => Alignment -> f Box -> Box
-- | vsep sep a bs lays out bs vertically with alignment
-- a, with sep amount of space in between each.
vsep :: Foldable f => Int -> Alignment -> f Box -> Box
-- | punctuateH a p bs horizontally lays out the boxes bs
-- with a copy of p interspersed between each.
punctuateH :: Foldable f => Alignment -> Box -> f Box -> Box
-- | A vertical version of punctuateH.
punctuateV :: Foldable f => Alignment -> Box -> f Box -> Box
-- | Data type for specifying the alignment of boxes.
data Alignment
-- | Align boxes to the left.
left :: Alignment
-- | Align boxes to the right.
right :: Alignment
-- | Align boxes along their tops.
top :: Alignment
-- | Align boxes along their bottoms.
bottom :: Alignment
-- | Align boxes centered, but biased to the left/top in case of unequal
-- parities.
center1 :: Alignment
-- | Align boxes centered, but biased to the right/bottom in case of
-- unequal parities.
center2 :: Alignment
-- | 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.
moveLeft :: Int -> Box -> Box
-- | Move a box right by putting it in a larger box with extra columns,
-- aligned right. See the disclaimer for moveLeft.
moveRight :: Int -> Box -> Box
-- | Move a box "up" by putting it in a larger box with extra rows, aligned
-- to the top. See the disclaimer for moveLeft.
moveUp :: Int -> Box -> Box
-- | Move a box down by putting it in a larger box with extra rows, aligned
-- to the bottom. See the disclaimer for moveLeft.
moveDown :: Int -> Box -> Box
-- | alignHoriz algn n bx creates a box of width n, with
-- the contents and height of bx, horizontally aligned according
-- to algn.
alignHoriz :: Alignment -> Int -> Box -> Box
-- | alignVert algn n bx creates a box of height n, with
-- the contents and width of bx, vertically aligned according to
-- algn.
alignVert :: Alignment -> Int -> Box -> Box
-- | 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.
align :: Alignment -> Alignment -> Int -> Int -> Box -> Box
rows :: Box -> Int
cols :: Box -> Int
-- | Render a Box as a String, suitable for writing to the screen or
-- a file.
render :: Box -> String
-- | A convenience function for rendering a box to stdout.
printBox :: Box -> IO ()
instance GHC.Show.Show Text.PrettyPrint.Boxes.Box
instance GHC.Show.Show Text.PrettyPrint.Boxes.Content
instance GHC.Show.Show Text.PrettyPrint.Boxes.Alignment
instance GHC.Read.Read Text.PrettyPrint.Boxes.Alignment
instance GHC.Classes.Eq Text.PrettyPrint.Boxes.Alignment
instance Data.String.IsString Text.PrettyPrint.Boxes.Box