MIT licensed by Albert Krewinkel
Maintained by Albert Krewinkel
This version can be pinned in stack with:hslua-module-doclayout-1.1.0@sha256:11a1325f06a46d82c7ddeb6ce56d936e8ab72f5fde3072715adccef7ac0dd83f,2659

Module documentation for 1.1.0

Depends on 4 packages(full list with versions):

hslua-module-doclayout

GitHub CI 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.

Changes

Changelog

hslua-module-doclayout uses PVP Versioning. The changelog is available on GitHub.

1.1.0

Release pending.

  • Require hslua-2.3 and tasty-lua-1.1.

  • Type info is added to all fields.

  • The Doc type is now associated with this module’s docs, making it easier to generate documentation.

1.0.4

Released 2022-04-03.

  • Allow doclayout-0.4.

1.0.3

Released 2022-02-18.

  • Relaxed upper bound for hslua, allowing hslua-2.2.

1.0.2

Released 2022-02-05.

  • Modify functions, ensuring that the main document is always the first argument. This allows convenient use of these functions as methods.

  • Improved documentation.

1.0.1

Released 2022-01-31.

  • Updated to hslua-2.1.

  • Functions that take a Doc as the first argument are added as methods to Doc values.

1.0.0

Released 2021-10-24.

  • Upgraded to hslua-2.0.
  • Switched module name from Foreign.Lua.Module.DocLayout to HsLua.Module.DocLayout.

0.2.0.1

Released 2020-10-28.

  • Relax upper bounds for hslua, allowing hslua-1.3.*

0.2.0

  • Full test coverage of all provided Lua functions.
  • Use documented module, including all function docs in the exported Haskell structure.
  • Test with all GHC 8 major versions.

0.1.0

  • Initial release.