tablify
In NodeJs programs, printing structured arrays to the console can be annoying. tablify
fulfills your greatest desires.
It can generate a pretty table out of
- an array of arrays
- an array of dictionaries; this is perhaps the most common thanks to (no)SQL
- a single dictionary, with each key/value pair getting a nice row
- data with or without headers
For example, here's how tablify handles an array of arrays:
tablify = tablifydata =123"cat""dog"MathPIconsolelog tablify data
Output:
---------------------------------
| 1 | 2 | 3 |
| cat | dog | 3.141592653589793 |
---------------------------------
Showing headers
If your structure has a header row, pass the optional "has_header" param:
data ="name""age""Chris"10"Max"8consolelog tablify data has_header: true
Output:
---------------
| name | age |
---------------
| Chris | 10 |
| Max | 8 |
---------------
Even cooler: an array of dictionaries
Even with inconsistent keys, you can print an array of dictionaries. Column headers are calculated automatically using the union of all keys.
data =name: "Chris" age: 16 gender: "M"name: "Max" age: 12 gender: "M"name: "Sam" gender: "F" colors: "Orange" "Blue"consolelog tablify data
Output:
-------------------------------------------------
| # | age | colors | gender | name |
-------------------------------------------------
| 0 | 16 | | M | Chris |
| 1 | 12 | | M | Max |
| 2 | | ["Orange","Blue"] | F | Sam |
-------------------------------------------------
Selecting only specific keys:
console.log tablify data, {keys: ["age","name"]}
Output:
--------------------
| # | age | name |
--------------------
| 0 | 16 | Chris |
| 1 | 12 | Max |
| 2 | | Sam |
--------------------
A single dictionary:
If tablify is passed an object that's not an array, it will pivot to show keys in one column and values in another.
console.log tablify {"name": "Chris", "age": 25, "obj": [1,2,3,{"foo":"bar"}]}
Output:
--------------------------------
| age | 25 |
| name | Chris |
| obj | [1,2,3,{"foo":"bar"}] |
--------------------------------
List of Options
Any subset of these can be passed as a second parameter to tablify, in a dictionary.
show_index
include a column showing the row number of each row. The default isfalse
unless tablify is passed an array of dictionaries, in which case the default istrue
has_header
include the first row as a header; this defaults tofalse
unless passed an array of dicts, in which case the keys are used as a first row and this defaults totrue
; if passing a single dictionary, this is ignoredkeys
which columns to use, when tablifying an array of dictionaries; by default all keys are used in alphabetical orderrow_start
default = '| 'row_end
default = ' |'spacer
default = ' | 'row_sep_char
default = '-'
Installation
> npm install -g tablify