[![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).