181 lines
3.8 KiB
Markdown
181 lines
3.8 KiB
Markdown
|
|
# markdown-table
|
|||
|
|
|
|||
|
|
[![Build][build-badge]][build]
|
|||
|
|
[![Coverage][coverage-badge]][coverage]
|
|||
|
|
[![Downloads][downloads-badge]][downloads]
|
|||
|
|
[![Size][size-badge]][size]
|
|||
|
|
|
|||
|
|
Generate fancy [Markdown][fancy]/ASCII tables.
|
|||
|
|
|
|||
|
|
## Installation
|
|||
|
|
|
|||
|
|
[npm][]:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm install markdown-table
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Usage
|
|||
|
|
|
|||
|
|
Normal usage (defaults to left-alignment):
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
var table = require('markdown-table')
|
|||
|
|
|
|||
|
|
table([
|
|||
|
|
['Branch', 'Commit'],
|
|||
|
|
['master', '0123456789abcdef'],
|
|||
|
|
['staging', 'fedcba9876543210']
|
|||
|
|
])
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Yields:
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
| Branch | Commit |
|
|||
|
|
| ------- | ---------------- |
|
|||
|
|
| master | 0123456789abcdef |
|
|||
|
|
| staging | fedcba9876543210 |
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
With alignment:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
table(
|
|||
|
|
[
|
|||
|
|
['Beep', 'No.', 'Boop'],
|
|||
|
|
['beep', '1024', 'xyz'],
|
|||
|
|
['boop', '3388450', 'tuv'],
|
|||
|
|
['foo', '10106', 'qrstuv'],
|
|||
|
|
['bar', '45', 'lmno']
|
|||
|
|
],
|
|||
|
|
{
|
|||
|
|
align: ['l', 'c', 'r']
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Yields:
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
| Beep | No. | Boop |
|
|||
|
|
| :--- | :-----: | -----: |
|
|||
|
|
| beep | 1024 | xyz |
|
|||
|
|
| boop | 3388450 | tuv |
|
|||
|
|
| foo | 10106 | qrstuv |
|
|||
|
|
| bar | 45 | lmno |
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Alignment on dots:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
table([['No.'], ['0.1.2'], ['11.22.33'], ['5.6.'], ['1.22222']], {
|
|||
|
|
align: '.'
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Yields:
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
| 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.
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
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.
|
|||
|
|
|
|||
|
|
## License
|
|||
|
|
|
|||
|
|
[MIT][license] © [Titus Wormer][author]
|
|||
|
|
|
|||
|
|
<!-- Definitions -->
|
|||
|
|
|
|||
|
|
[build-badge]: https://img.shields.io/travis/wooorm/markdown-table.svg
|
|||
|
|
|
|||
|
|
[build]: https://travis-ci.org/wooorm/markdown-table
|
|||
|
|
|
|||
|
|
[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/markdown-table.svg
|
|||
|
|
|
|||
|
|
[coverage]: https://codecov.io/github/wooorm/markdown-table
|
|||
|
|
|
|||
|
|
[downloads-badge]: https://img.shields.io/npm/dm/markdown-table.svg
|
|||
|
|
|
|||
|
|
[downloads]: https://www.npmjs.com/package/markdown-table
|
|||
|
|
|
|||
|
|
[size-badge]: https://img.shields.io/bundlephobia/minzip/markdown-table.svg
|
|||
|
|
|
|||
|
|
[size]: https://bundlephobia.com/result?p=markdown-table
|
|||
|
|
|
|||
|
|
[npm]: https://docs.npmjs.com/cli/install
|
|||
|
|
|
|||
|
|
[license]: license
|
|||
|
|
|
|||
|
|
[author]: https://wooorm.com
|
|||
|
|
|
|||
|
|
[fancy]: https://help.github.com/articles/github-flavored-markdown/#tables
|
|||
|
|
|
|||
|
|
[text-table]: https://github.com/substack/text-table
|