@shoedler/tabelify
v1.0.1
Published
Nicely display data as tables in the terminal
Downloads
2
Readme
tabelify
Nicely display data as tables in the terminal. Only one dependency: chalk to colorize the output.
Installation
npm i @shoelder/tabelify
Basic Usage
import { tabelify } from 'tabelify';
const data = [
{ name: 'John', age: 24, city: 'New York' },
{ name: 'Jane', age: 23, city: 'London' },
{ name: 'Jack', age: 25, city: 'Paris' },
];
console.log(tabelify(data));
Advanced Usage
Here's and example with all the options configured:
import { tabelify } from 'tabelify';
const data = [
{ name: 'John', age: 24, city: 'New York' },
{ name: 'Jane', age: 23, city: 'London' },
{ name: 'Jack', age: 25, city: [1, 2, 3, 4] },
];
const out = tabelify(data, {
selector: ['name', 'age'], // Only display name and age
tabelifyOptions: {
rowDivider: true, // Add a divider between rows
border: 'single', // Add a border around the table. Also supports 'double', 'rounded', 'bold' and 'ascii'
recurse: true, // Recurse into objects and arrays
indices: true, // Add a column with indices
},
columnOptions: {
age: {
headerOverride: 'Age', // Override the header name
horizontalAlignment: 'right', // Align column to the right. Also supports 'left' and 'middle'
verticalAlignment: 'center', // Align column to the center. Also supports 'top' and 'bottom'
formatter: (value, chalk) => chalk.red(value), // Format the value with chalk
},
},
});
console.log(out);
Here's an example with mixed data:
import { tabelify } from 'tabelify';
const out = tabelify(
[
{ name: 'John', age: 24, city: 'New York\nYay!', country: 'USA' },
{ name: 'Mary', age: 27, city: 'Berlin', country: [{ lol: 1 }, { foo: 2 }, { bar: 3 }] },
{ name: 'Mike', age: 41, city: 'Rome', country: { f: 1 } },
{ name: 'Lisa\nMartinez\nValencia\nVeloquez', age: 19, city: 'Madrid', country: () => 1 },
{ name: 'Tom', age: 23, city: 'Vienna', country: 123n },
{ name: 'Kim', age: 29, city: 'Amsterdam', country: [null, undefined] },
1 as any,
],
{
selector: ['name', 'age', 'city', 'country'],
columnOptions: {
name: {
headerOverride: c.bold.magentaBright('Name'),
},
age: {
headerOverride: c.bold.magentaBright('Age'),
horizontalAlignment: 'right',
},
country: {
headerOverride: c.bold.magentaBright('Country'),
horizontalAlignment: 'right',
},
city: {
headerOverride: c.bold.magentaBright('City'),
horizontalAlignment: 'left',
},
},
tabelifyOptions: {
rowDivider: true,
border: 'rounded',
recurse: true,
indices: true,
},
},
);
console.log(out);