[![view on npm](http://img.shields.io/npm/v/table-layout.svg)](https://www.npmjs.org/package/table-layout)
[![npm module downloads](http://img.shields.io/npm/dt/table-layout.svg)](https://www.npmjs.org/package/table-layout)
[![Build Status](https://travis-ci.org/75lb/table-layout.svg?branch=master)](https://travis-ci.org/75lb/table-layout)
[![Dependency Status](https://badgen.net/david/dep/75lb/table-layout)](https://david-dm.org/75lb/table-layout)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](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).