hslua-module-doclayout
Lua module wrapping Text.DocLayout.
https://github.com/hslua/hslua-module-doclayout
| LTS Haskell 24.16: | 1.2.0.1 |
| Stackage Nightly 2025-10-24: | 1.2.0.1 |
| Latest on Hackage: | 1.2.0.1 |
hslua-module-doclayout-1.2.0.1@sha256:b0e9e85c1d416667c76cdc1b0a05848176b3546014bcf140ff12e552623a6234,2692Module documentation for 1.2.0.1
- HsLua
- HsLua.Module
hslua-module-doclayout
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[, style]])
Render the Doc using the given column width.
Parameters:
doc
: Doc to render
colwidth
: Maximum number of characters per line
style
: Whether to generate ‘plain’ or ‘ANSI’ terminal output. Must be
either 'plain' or 'ansi'. Defaults to 'plain'. (string)
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.2.0.1
Released 2025-06-23.
- Relaxed upper bound for hslua, allow hslua-2.4.
1.2.0
Released 2024-09-21.
-
Require doclayout-0.5.
-
Add new styling functions
bold,italic,underlined,strikeout,fg, andbg. -
The
renderfunction now takesstyleas a third parameter. It must be either ‘plain’ or ‘ansi’ when given.
1.1.1.2
Released 2024-06-10.
- Fixed another documentation bugs:
renderreturns astring.
1.1.1.1
Released 2024-06-09.
- Fixed minor typos in docstrings.
1.1.1
Released 2024-01-23.
-
Relaxed upper bound for text, allowing text-2.1.
-
Improved doc strings.
-
Test with latest GHC versions.
1.1.0
Release pending.
-
Require hslua-2.3 and tasty-lua-1.1.
-
Type info is added to all fields.
-
The
Doctype 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
Docas the first argument are added as methods toDocvalues.
1.0.0
Released 2021-10-24.
- Upgraded to hslua-2.0.
- Switched module name from
Foreign.Lua.Module.DocLayouttoHsLua.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.