Generate fancy Markdown tables.
npm:
npm install markdown-table
Typical usage (defaults to align left):
var table = require('markdown-table') table([ ['Branch', 'Commit'], ['master', '0123456789abcdef'], ['staging', 'fedcba9876543210'] ])
Yields:
| Branch | Commit | | ------- | ---------------- | | master | 0123456789abcdef | | staging | fedcba9876543210 |
With align:
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 |
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), or 'c'
(center). Other values are treated as ''
, which doesn’t place the colon in the alignment row but does align left. Only the lowercased first character is used, so Right
is fine.
options.padding
Whether to add a space of padding between delimiters and cells (boolean
, default: true
).
When true
, there is padding:
| Alpha | B | | ----- | ----- | | C | Delta |
When false
, there is no padding:
|Alpha|B | |-----|-----| |C |Delta|
options.delimiterStart
Whether to begin each row with the delimiter (boolean
, default: true
).
Note: please don’t use this: it could create fragile structures that aren’t understandable to some Markdown parsers.
When true
, there are starting delimiters:
| Alpha | B | | ----- | ----- | | C | Delta |
When false
, there are no starting delimiters:
Alpha | B | ----- | ----- | C | Delta |
options.delimiterEnd
Whether to end each row with the delimiter (boolean
, default: true
).
Note: please don’t use this: it could create fragile structures that aren’t understandable to some Markdown parsers.
When true
, there are ending delimiters:
| Alpha | B | | ----- | ----- | | C | Delta |
When false
, there are no ending delimiters:
| Alpha | B | ----- | ----- | C | Delta
options.alignDelimiters
Whether to align the delimiters (boolean
, default: true
). By default, they are aligned:
| Alpha | B | | ----- | ----- | | C | Delta |
Pass false
to make them staggered:
| Alpha | B | | - | - | | C | Delta |
options.stringLength
Method to detect the length of a cell (Function
, default: s => s.length
).
Full-width characters and ANSI-sequences all mess up delimiter alignment when viewing the Markdown source. To fix this, you have to pass in a stringLength
option to detect the “visible” length of a cell (note that what is and isn’t visible depends on your editor).
Without such a function, the following:
table([ ['Alpha', 'Bravo'], ['中文', 'Charlie'], ['👩❤️👩', 'Delta'] ])
Yields:
| Alpha | Bravo | | - | - | | 中文 | Charlie | | 👩❤️👩 | Delta |
With string-width
:
var width = require('string-width') table( [ ['Alpha', 'Bravo'], ['中文', 'Charlie'], ['👩❤️👩', 'Delta'] ], {stringLength: width} )
Yields:
| Alpha | Bravo | | ----- | ------- | | 中文 | Charlie | | 👩❤️👩 | Delta |
The original idea and basic implementation was inspired by James Halliday’s text-table
library.