3.8 KiB
markdown-table
Generate fancy Markdown/ASCII tables.
Installation
npm:
npm install markdown-table
Usage
Normal usage (defaults to left-alignment):
var table = require('markdown-table')
table([
['Branch', 'Commit'],
['master', '0123456789abcdef'],
['staging', 'fedcba9876543210']
])
Yields:
| Branch | Commit |
| ------- | ---------------- |
| master | 0123456789abcdef |
| staging | fedcba9876543210 |
With alignment:
table(
[
['Beep', 'No.', 'Boop'],
['beep', '1024', 'xyz'],
['boop', '3388450', 'tuv'],
['foo', '10106', 'qrstuv'],
['bar', '45', 'lmno']
],
{
align: ['l', 'c', 'r']
}
)
Yields:
| Beep | No. | Boop |
| :--- | :-----: | -----: |
| beep | 1024 | xyz |
| boop | 3388450 | tuv |
| foo | 10106 | qrstuv |
| bar | 45 | lmno |
Alignment on dots:
table([['No.'], ['0.1.2'], ['11.22.33'], ['5.6.'], ['1.22222']], {
align: '.'
})
Yields:
| No. |
| :---------: |
| 0.1.2 |
| 11.22.33 |
| 5.6. |
| 1.22222 |
API
markdownTable(table[, options])
Turns a given matrix of strings (an array of arrays of strings) into a table.
options
options.align
One style for all columns, or styles for their respective columns (string
or
Array.<string>
). Each style is either 'l'
(left), 'r'
(right), 'c'
(centre), or '.'
(dot). Other values are treated as ''
, which doesn’t place
the colon but does left align. Only the lowercased first character is used,
so Right
is fine.
options.delimiter
Value to insert between cells (string
, default: ' | '
). Careful, setting
this to a non-pipe breaks GitHub Flavoured Markdown.
options.start
Value to insert at the beginning of every row (string
, default: '| '
).
options.end
Value to insert at the end of every row (string
, default: ' |'
).
options.rule
Whether to display a rule between the header and the body of the table
(boolean
, default: true
). Careful, will break GitHub Flavoured Markdown
when false
.
options.stringLength
Method to detect the length of a cell (Function
, default: s => s.length
).
ANSI-sequences mess up tables on terminals. To fix this, you have to
pass in a stringLength
option to detect the “visible” length of a
cell.
var strip = require('strip-ansi')
function stringLength(cell) {
return strip(cell).length
}
options.pad
Whether to pad the markdown for table cells to make them the same width
(boolean
, default: true
). Setting this to false will cause the table
rows to remain staggered.
Inspiration
The original idea and basic implementation was inspired by James Halliday’s text-table library.