tabledown

0.3.0 • Public • Published

Tabledown

Easily create markdown tables in your Javascript applications.

Features

  • Input data format agnostic
    • Array of arrays
    • Array of objects
  • Support for several markdown flavors
    • Simple tables
    • Multiline tables
    • Grid tables
    • Pipe tables
  • Column alignment
  • Custom headers
  • Optional caption

Installation

As command line tool:

npm install --global tabledown

As module:

npm install --save tabledown

Usage

Command Line

echo '[{"name": "John", "age": 32}, {"name": "Anna", "age": 27}]' | tabledown

yields

name | age
-----|----
John | 32
Anna | 27

Module

Simple

import Tabledown from 'tabledown'
const food = [
	{
		name: 'banana',
		color: 'yellow',
		price: 3.23,
		quantity: 2,
	},
	{
		name: 'tomato',
		color: 'red',
		price: 2.67,
		quantity: 6,
	}
]

const table = new Tabledown({data: food})

console.log(table.toString())

yields

name   |  color | price | quantity
-------|--------|-------|---------
banana | yellow | 3.23  |    2
tomato |    red | 2.67  |    6

Extended

import Tabledown from 'tabledown'
const food = [
	{
		name: 'banana',
		color: 'yellow',
		price: 3.23,
		quantity: 2,
	},
	{
		name: 'tomato',
		color: 'red',
		price: 2.67,
		quantity: 6,
	},
	{
		name: 'cucumber',
		color: 'green',
		price: 5.82,
		quantity: 4,
	},
	{
		name: 'carrot',
		color: 'orange',
		price: 3,
		quantity: 9,
	}
]

const table = new Tabledown({
	caption: 'Food',
	data: food,
	alignments: {
		name: 'left',
		color: 'right',
		price: 'decimal mark', // Not yet implemented
		quantity: 'center',
	},
	headerTexts: {
		name: 'the Fruit',
		color: 'the Color',
		price: 'the Price (€)',
		quantity: 'the Quantity',
	},
	style: 'pipe', // or simple, multiline, grid (not yet implemented)
	capitalizeHeaders: true,
})

console.log(table.toString())

yields

Table: Food

The Fruit | The Color | The Price (€) | The Quantity
:---------|----------:|---------------|:-----------:
banana    |    yellow | 3.23          |      2
tomato    |       red | 2.5           |      6
cucumber  |     green | 5.82          |      4
carrot    |    orange | 12            |      9

The data can also be provided as an array. The first sub-array must contain the headers.

const food = [
	['name',     'color', 'price', 'quantity'],
	['banana',   'yellow',  3.23,      2     ],
	['tomato',   'red',     2.5 ,      6     ],
	['cucumber', 'green',   5.82,      4     ],
	['carrot',   'orange', 12,         9     ],
]

const table = new Tabledown({data: food})

Readme

Keywords

Package Sidebar

Install

npm i tabledown

Weekly Downloads

9

Version

0.3.0

License

ISC

Last publish

Collaborators

  • adius