@hackage hslua-module-doclayout1.0.3

Lua module wrapping Text.DocLayout.

hslua-module-doclayout

GitHub CI Build status Hackage Stackage Lts Stackage Nightly MIT license

Lua module wrapping the doclayout Haskell package.

Example

loadProg :: Lua Status
loadProg = do
  openlibs
  preloadModule "doclayout"
  dostring $ unlines
    [ "doc = require 'doclayout'"
    , "local example_doc = (doc.literal 'Line' + 'One')"
    , "                 // (doc.literal 'Line' + 'Two')"
    , "-- prints:"
    , "-- Line One"
    , "--"
    , "-- Line Two"
    , "print(doc.render(example_doc))"
    , ""
    , "-- prints:"
    , "-- Line"
    , "-- One"
    , "--"
    , "-- Line"
    , "-- Two"
    , "local columns = 5"
    , "print(doc.render(example_doc, columns))"
    ]

Documentation

Functions

render

render (doc[, colwidth])

Render the Doc using the given column width.

Parameters:

doc : Doc to render

colwidth : Maximum number of characters per line

Doc construction

All functions return a fresh Doc element.

after_break

after_break

Creates a Doc which is conditionally included only if it comes at the beginning of a line.

before_non_blank

before_non_blank (doc)

Conditionally includes the given Doc unless it is followed by a blank space.

blankline

blankline

Inserts a blank line unless one exists already.

blanklines

blanklines (n)

Insert blank lines unless they exist already.

Parameters:

n : Number of blank lines to insert.

braces

braces (doc)

Puts a Doc in curly braces.

brackets

brackets (doc)

Puts a Doc in square brackets.

cblock

cblock (width, doc)

Like lblock but aligned centered.

Parameters:

width : Width of the created block, in characters

doc : Contents of the block ([Doc])

chomp

chomp (doc)

Chomps trailing blank space off of a Doc.

concat

concat (docs[, sep])

Concatenate the given Docs, interspersing sep if specified.

Parameters:

docs : List of Docs

sep : Separator Doc

cr

A carriage return. Does nothing if we're at the beginning of a line; otherwise inserts a newline.

double_quotes

double_quotes (doc)

Wraps a Doc in double quotes

empty

The empty document.

flush

flush (doc)

Makes a Doc flush against the left margin.

hang

hang (indent, start, doc)

Creates a hanging indent.

Parameters:

indent : Indentation width in characters

start : Start, printed unindented

doc : Doc which is indented by indent spaces on every line.

inside

inside (start, end, contents)

Encloses a Doc inside a start and end Doc.

Parameters:

start : Doc before contents

end : Doc after contents

contents : Contents Doc

lblock

lblock (width, doc)

Creates a block with the given width and content, aligned to the left.

Parameters:

width : Width of the created block, in characters

doc : Contents of the block ([Doc])

literal

literal (string)

Creates a Doc from a string.

nest

nest (indent)

Indents a Doc by the specified number of spaces.

Parameters:

indent : Indentation width.

nestle

nestle (doc)

Removes leading blank lines from a Doc.

nowrap

nowrap (doc)

Makes a Doc non-reflowable.

parens

parens (doc)

Puts a Doc in parentheses.

prefixed

prefixed (prefix, doc)

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

Parameters:

prefix : Prefix to prepend to each line

doc : Inside Doc.

quotes

quotes (doc)

Wraps a Doc in single quotes.

rblock

rblock (indent, doc)

Like lblock but aligned to the right.

Parameters:

width : Width of the created block, in characters

doc : Contents of the block ([Doc])

space

A breaking (reflowable) space.

vfill

vfill

Creates an expandable border that, when placed next to a box, expands to the height of the box.

Parameters:

text : Border text

Operators

..

Concatenate two Doc elements.

+

Concatenate two Docs, inserting a reflowable space between them.

/

If a and b are Doc elements, then a / b puts a above b.

//

If a and b are Doc elements, then a // b puts a above b, inserting a blank line between them.

Document Querying

is_empty

is_empty (doc)

Returns true iff doc is the empty document, false otherwise.

min_offset

min_offset (doc)

Returns the minimal width of a @'Doc'@ when reflowed at breakable spaces.

update_column

update_column (doc, i)

Returns the column that would be occupied by the last laid out character.

height

height (doc)

Returns the height of a block or other Doc.

real_length

real_length (str)

Returns the real length of a string in a monospace font: 0 for a combining character, 1, for a regular character, 2 for an East Asian wide character.

offset

offset (doc)

Returns the width of a Doc (as number of characters).

License

This package is made available under the MIT license. See LICENSE for details.