[](https://www.npmjs.org/package/table-layout)
[](https://www.npmjs.org/package/table-layout)
[](https://travis-ci.org/75lb/table-layout)
[](https://david-dm.org/75lb/table-layout)
[](https://github.com/feross/standard)
# 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](https://github.com/75lb/table-layout-cli).
## Synopsis
```
> const Table = require('table-layout')
> const issues = require('./example/issues')
> const table = new Table(issues, { maxWidth: 60 })
> console.log(table.toString())
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
```
## API Reference
* [table-layout](#module_table-layout)
* [Table](#exp_module_table-layout--Table) ⏏
* [new Table(data, [options])](#new_module_table-layout--Table_new)
* [table.renderLines()](#module_table-layout--Table+renderLines) ⇒ Array.<string>
* [table.toString()](#module_table-layout--Table+toString) ⇒ string
* [Table~columnOption](#module_table-layout--Table..columnOption)
### Table ⏏
Recordset data in (array of objects), text table out.
**Kind**: Exported class
#### 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](#module_table-layout--Table..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 the `options.columns` array.
- [.left] string - Defaults to a single space.
- [.right] string - Defaults to a single space.
**Example**
```js
> 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
```
#### table.renderLines() ⇒ Array.<string>
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](#exp_module_table-layout--Table)
#### table.toString() ⇒ string
Returns the input data as a text table.
**Kind**: instance method of [Table](#exp_module_table-layout--Table)
#### Table~columnOption
**Kind**: inner typedef of [Table](#exp_module_table-layout--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-19 Lloyd Brookes \<75pound@gmail.com\>. Documented by [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown).