hslua-module-doclayout: Lua module wrapping Text.DocLayout.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Lua module wrapping Text.DocLayout.


[Skip to Readme]

Properties

Versions 0.1.0, 0.2.0, 0.2.0.1, 1.0.0, 1.0.1, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.1.0, 1.1.1
Change log CHANGELOG.md
Dependencies base (>=4.9 && <5), doclayout (>=0.2 && <0.4), hslua (>=2.1 && <2.2), text (>=1.0 && <1.3) [details]
License MIT
Copyright © 2020-2021 Albert Krewinkel
Author Albert Krewinkel
Maintainer Albert Krewinkel <albert@zeitkraut.de>
Category Foreign
Home page https://github.com/hslua/hslua-module-doclayout
Bug tracker https://github.com/hslua/hslua-module-doclayout/issues
Source repo head: git clone https://github.com/hslua/hslua-module-doclayout.git
Uploaded by tarleb at 2022-01-31T11:15:19Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for hslua-module-doclayout-1.0.1

[back to package description]

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.