Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/trentm/node-tabula
a light function for printing a text table to stdout
https://github.com/trentm/node-tabula
Last synced: 2 months ago
JSON representation
a light function for printing a text table to stdout
- Host: GitHub
- URL: https://github.com/trentm/node-tabula
- Owner: trentm
- License: other
- Created: 2014-05-30T19:50:30.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2020-09-24T18:38:26.000Z (over 4 years ago)
- Last Synced: 2024-10-14T12:46:29.536Z (2 months ago)
- Language: JavaScript
- Size: 87.9 KB
- Stars: 2
- Watchers: 2
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE.txt
Awesome Lists containing this project
README
A light `tabula(items, options)` function for printing a text table
to stdout.Why another one? I had one that worked for me and wanted to re-use it. Trawling
through dozens of available ones on npm was a chore I haven't done. I'd welcome
a table-printing node.js bake off.# Install
npm install tabula
# Usage
```javascript
var tabula = require('tabula');var items = [
{name: 'trent', age: 38, game: 'hockey'},
{name: 'ewan', age: 4, game: 'chess'}
];tabula(items);
/* prints:
NAME AGE GAME
trent 38 hockey
ewan 4 chess
*/tabula(items, {columns: ['name', 'age']});
/* prints:
NAME AGE
trent 38
ewan 4
*/tabula(items, {
columns: ['name', 'age'],
skipHeader: true
});
/* prints:
trent 38
ewan 4
*/// Sort by age. Attempts numeric sort on given fields.
// Note: This actually sorts the given `items` array in-place.
tabula(items, {
columns: ['name', 'age'],
sort: ['age']
});
/* prints:
NAME AGE
ewan 4
trent 38
*/
```# TODO
- document dottedLookup
- document column align=right
- document opts.noAnsi
- document column width, maxWidth
- document sort.*.keyFunc# `tabula` CLI
There is also a `tabula` CLI that can be used for emitting a table
from a stream of JSON objects (or a single JSON array). E.g.:$ echo '[{"name":"trent","age":38}, {"name":"ewan","age":4}]' | tabula
NAME AGE
trent 38
ewan 4# column selection
$ echo '[{"name":"trent","age":38}, {"name":"ewan","age":4}]' | tabula name
NAME
trent
ewan# sorting
$ echo '[{"name":"trent","age":38}, {"name":"ewan","age":4}]' | tabula -s age
NAME AGE
ewan 4
trent 38# Features
This section is an (incomplete) list and demo of some of tabula's features.
## ANSI escape codes
`tabula` (as of version 1.7.0) properly calculates widths for cells using
ANSI escape codes for coloring. E.g. try this sample:```
var tabula = require('tabula');
function red(s) {
return '\033[31m' + s + '\033[39m';
}
tabula([
{ name: 'Trent', age: 42, job: 'Engineer' },
{ name: 'Ewan', age: red(8), job: 'Student' },
]);
```# TODO
- Describe the "opinions", features and limitations of this module.
- `tabula` CLI for piping in a JSON array of objects, or stream of objects.
- streaming
- option for skipping non-JSON lines (e.g. for bunyan logs)
- option for non-JSON input? e.g. space separated ('json -ga foo bar'
output, output from other table-emitting things, perhaps then 2-space
or more separated), naive-csv
- separate tabula-cli module?
- test cases- Merge this with [node-tab](https://github.com/davepacheco/node-tab) if
reasonable. I have some PR work for it (that I haven't completed) to add some
conveniences that `tabulate` provides. It is silly to have two table-printing
libs in play.# License
MIT. See LICENSE.txt.