table-layout
Generates plain-text tables from JSON recordset input (array of objects). Useful for presenting text in column layout or data in table layout in text-based user interfaces. Also available as a command-line tool.
Synopsis
Where input looks like this:
[
{
"number": 15134,
"title": "Coveralls has no source available ",
"login": "ndelangen",
"comments": 0
},
{
"number": 15133,
"title": "Fixing --preserve-symlinks. Enhancing node to exploit.",
"login": "phestermcs",
"comments": 0
},
{
"number": 15131,
"title": "Question - Confused about NPM's local installation philosophy",
"login": "the1mills",
"comments": 0
},
{
"number": 15130,
"title": "Question - global npm cache directory if user is root?",
"login": "ORESoftware",
"comments": 0
}
]
This code...
const Table = require('table-layout')
const issues = require('./issues.json')
const table = new Table(issues, { maxWidth: 60 })
console.log(table.toString())
...produces this output:
15134 Coveralls has no source available ndelangen 0
15133 Fixing --preserve-symlinks. phestermcs 0
Enhancing node to exploit.
15131 Question - Confused about NPM's the1mills 0
local installation philosophy
15130 Question - global npm cache ORESoftware 0
directory if user is root?
15127 how to installa gulp fontfacegen aramgreat 0
on Windows 10
15097 Cannot install package from mastertinner 3
tarball out of package.json entry
generated by npm
15067 npm "SELF_SIGNED_CERT_IN_CHAIN" LegendsLyfe 3
error when installing discord.js
with .log
Load anywhere
This library is compatible with Node.js, the Web and any style of module loader. It can be loaded anywhere, natively without transpilation.
Node.js:
const TableLayout = require('table-layout')
Within Node.js with ECMAScript Module support enabled:
import TableLayout from 'table-layout'
Within an modern browser ECMAScript Module:
import TableLayout from './node_modules/table-layout/dist/index.mjs'
Old browser (adds window.TableLayout
):
<script nomodule src="./node_modules/table-layout/dist/index.js"></script>
API Reference
-
table-layout
-
Table
⏏ - new Table(data, [options])
-
table.renderLines() ⇒
Array.<string>
-
table.toString() ⇒
string
- Table~columnOption
-
Table
⏏
Table Recordset data in (array of objects), text table out.
new Table(data, [options])
Params
- data
Array.<object>
- input data - [options]
object
- optional settings- [.maxWidth]
number
- maximum width of layout - [.noWrap]
boolean
- disable wrapping on all columns - [.noTrim]
boolean
- disable line-trimming - [.break]
boolean
- enable word-breaking on all columns - [.columns]
columnOption
- array of column-specific options - [.ignoreEmptyColumns]
boolean
- if set, empty columns or columns containing only whitespace are not rendered. - [.padding]
object
- Padding values to set on each column. Per-column overrides can be set in theoptions.columns
array.- [.left]
string
- Defaults to a single space. - [.right]
string
- Defaults to a single space.
- [.left]
- [.eol]
string
- EOL character used. Defaults to\n
.
- [.maxWidth]
Example
> Table = require('table-layout')
> jsonData = [{
col1: 'Some text you wish to read in table layout',
col2: 'And some more text in column two. '
}]
> table = new Table(jsonData, { maxWidth: 30 })
> console.log(table.toString())
Some text you And some more
wish to read text in
in table column two.
layout
Array.<string>
table.renderLines() ⇒ Identical to .toString()
with the exception that the result will be an array of lines, rather than a single, multi-line string.
Kind: instance method of Table
string
table.toString() ⇒ Returns the input data as a text table.
Kind: instance method of Table
Table~columnOption
Kind: inner typedef of Table
Properties
Name | Type | Description |
---|---|---|
name | string |
column name, must match a property name in the input |
[width] | number |
A specific column width. Supply either this or a min and/or max width. |
[minWidth] | number |
column min width |
[maxWidth] | number |
column max width |
[nowrap] | boolean |
disable wrapping for this column |
[break] | boolean |
enable word-breaking for this columns |
[padding] | object |
padding options |
[padding.left] | string |
a string to pad the left of each cell (default: ' ' ) |
[padding.right] | string |
a string to pad the right of each cell (default: ' ' ) |
© 2015-21 Lloyd Brookes <75pound@gmail.com>. Documented by jsdoc-to-markdown.