-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A prettyprinting library for laying out text documents.
--
-- doclayout is a prettyprinting library for laying out text documents,
-- with several features not present in prettyprinting libraries designed
-- for code. It was designed for use in pandoc.
@package doclayout
@version 0.2
-- | A prettyprinting library for the production of text documents,
-- including wrapped text, indentation and other prefixes, and blocks for
-- tables.
module Text.DocLayout
-- | Render a Doc. render (Just n) will use a line length
-- of n to reflow text on breakable spaces. render
-- Nothing will not reflow text.
render :: HasChars a => Maybe Int -> Doc a -> a
-- | A carriage return. Does nothing if we're at the beginning of a line;
-- otherwise inserts a newline.
cr :: Doc a
-- | Inserts a blank line unless one exists already. (blankline
-- <> blankline has the same effect as blankline.
blankline :: Doc a
-- | Inserts blank lines unless they exist already. (blanklines m
-- <> blanklines n has the same effect as blanklines (max
-- m n).
blanklines :: Int -> Doc a
-- | A breaking (reflowable) space.
space :: Doc a
-- | Create a Doc from a stringlike value.
literal :: HasChars a => a -> Doc a
-- | A literal string. (Like literal, but restricted to String.)
text :: HasChars a => String -> Doc a
-- | A character.
char :: HasChars a => Char -> Doc a
-- | Uses the specified string as a prefix for every line of the inside
-- document (except the first, if not at the beginning of the line).
prefixed :: IsString a => String -> Doc a -> Doc a
-- | Makes a Doc flush against the left margin.
flush :: Doc a -> Doc a
-- | Indents a Doc by the specified number of spaces.
nest :: IsString a => Int -> Doc a -> Doc a
-- | A hanging indent. hang ind start doc prints start,
-- then doc, leaving an indent of ind spaces on every
-- line but the first.
hang :: IsString a => Int -> Doc a -> Doc a -> Doc a
-- | beforeNonBlank d conditionally includes d unless it
-- is followed by blank space.
beforeNonBlank :: Doc a -> Doc a
-- | Makes a Doc non-reflowable.
nowrap :: IsString a => Doc a -> Doc a
-- | Content to print only if it comes at the beginning of a line, to be
-- used e.g. for escaping line-initial . in roff man.
afterBreak :: Text -> Doc a
-- | lblock n d is a block of width n characters, with
-- text derived from d and aligned to the left.
lblock :: HasChars a => Int -> Doc a -> Doc a
-- | Like lblock but aligned centered.
cblock :: HasChars a => Int -> Doc a -> Doc a
-- | Like lblock but aligned to the right.
rblock :: HasChars a => Int -> Doc a -> Doc a
-- | An expandable border that, when placed next to a box, expands to the
-- height of the box. Strings cycle through the list provided.
vfill :: HasChars a => a -> Doc a
-- | Removes leading blank lines from a Doc.
nestle :: Doc a -> Doc a
-- | Chomps trailing blank space off of a Doc.
chomp :: Doc a -> Doc a
-- | Encloses a Doc inside a start and end Doc.
inside :: Doc a -> Doc a -> Doc a -> Doc a
-- | Puts a Doc in curly braces.
braces :: HasChars a => Doc a -> Doc a
-- | Puts a Doc in square brackets.
brackets :: HasChars a => Doc a -> Doc a
-- | Puts a Doc in parentheses.
parens :: HasChars a => Doc a -> Doc a
-- | Wraps a Doc in single quotes.
quotes :: HasChars a => Doc a -> Doc a
-- | Wraps a Doc in double quotes.
doubleQuotes :: HasChars a => Doc a -> Doc a
-- | The empty document.
empty :: Doc a
-- | Concatenate a list of Docs, putting breakable spaces between
-- them.
(<+>) :: Doc a -> Doc a -> Doc a
infixr 6 <+>
-- | a $$ b puts a above b.
($$) :: Doc a -> Doc a -> Doc a
infixr 5 $$
-- | a $+$ b puts a above b, with a blank line
-- between.
($+$) :: Doc a -> Doc a -> Doc a
infixr 5 $+$
-- | Concatenate documents horizontally.
hcat :: [Doc a] -> Doc a
-- | Same as hcat, but putting breakable spaces between the
-- Docs.
hsep :: [Doc a] -> Doc a
-- | List version of $$.
vcat :: [Doc a] -> Doc a
-- | List version of $+$.
vsep :: [Doc a] -> Doc a
-- | True if the document is empty.
isEmpty :: Doc a -> Bool
-- | Returns the width of a Doc.
offset :: (IsString a, HasChars a) => Doc a -> Int
-- | Returns the minimal width of a Doc when reflowed at breakable
-- spaces.
minOffset :: HasChars a => Doc a -> Int
-- | Returns the column that would be occupied by the last laid out
-- character (assuming no wrapping).
updateColumn :: HasChars a => Doc a -> Int -> Int
-- | Returns the height of a block or other Doc.
height :: HasChars a => Doc a -> Int
-- | Returns width of a character in a monospace font: 0 for a combining
-- character, 1 for a regular character, 2 for an East Asian wide
-- character.
charWidth :: Char -> Int
-- | Get real length of string, taking into account combining and
-- double-wide characters.
realLength :: HasChars a => a -> Int
-- | Document, including structure relevant for layout.
data Doc a
-- | Text with specified width.
Text :: Int -> a -> Doc a
-- | A block with a width and lines.
Block :: Int -> [a] -> Doc a
-- | A vertically expandable block; when concatenated with a block, expands
-- to height of block, with each line containing the specified text.
VFill :: Int -> a -> Doc a
-- | Doc with each line prefixed with text. Note that trailing blanks are
-- omitted from the prefix when the line after it is empty.
Prefixed :: Text -> Doc a -> Doc a
-- | Doc that renders only before nonblank.
BeforeNonBlank :: Doc a -> Doc a
-- | Doc laid out flush to left margin.
Flush :: Doc a -> Doc a
-- | A space or line break, in context.
BreakingSpace :: Doc a
-- | Text printed only at start of line.
AfterBreak :: Text -> Doc a
-- | Newline unless we're at start of line.
CarriageReturn :: Doc a
-- | newline.
NewLine :: Doc a
-- | Ensure a number of blank lines.
BlankLines :: Int -> Doc a
-- | Two documents concatenated.
Concat :: Doc a -> Doc a -> Doc a
Empty :: Doc a
-- | Class abstracting over various string types that can fold over
-- characters. Minimal definition is foldrChar, but defining the
-- other methods can give better performance.
class (IsString a, Semigroup a, Monoid a, Show a) => HasChars a
foldrChar :: HasChars a => (Char -> b -> b) -> b -> a -> b
replicateChar :: HasChars a => Int -> Char -> a
isNull :: HasChars a => a -> Bool
splitLines :: HasChars a => a -> [a]
instance GHC.Generics.Generic (Text.DocLayout.Doc a)
instance Data.Data.Data a => Data.Data.Data (Text.DocLayout.Doc a)
instance Data.Traversable.Traversable Text.DocLayout.Doc
instance Data.Foldable.Foldable Text.DocLayout.Doc
instance GHC.Base.Functor Text.DocLayout.Doc
instance GHC.Classes.Ord a => GHC.Classes.Ord (Text.DocLayout.Doc a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.DocLayout.Doc a)
instance GHC.Read.Read a => GHC.Read.Read (Text.DocLayout.Doc a)
instance GHC.Show.Show a => GHC.Show.Show (Text.DocLayout.Doc a)
instance GHC.Base.Semigroup (Text.DocLayout.Doc a)
instance GHC.Base.Monoid (Text.DocLayout.Doc a)
instance Text.DocLayout.HasChars a => Data.String.IsString (Text.DocLayout.Doc a)
instance Text.DocLayout.HasChars Data.Text.Internal.Text
instance Text.DocLayout.HasChars GHC.Base.String
instance Text.DocLayout.HasChars Data.Text.Internal.Lazy.Text