Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xpl/as-table
A simple function that prints objects as ASCII tables. Supports ANSI styling and weird Unicode 💩 emojis – they won't break the layout.
https://github.com/xpl/as-table
ascii-tables javascript pretty-print stringify
Last synced: 3 months ago
JSON representation
A simple function that prints objects as ASCII tables. Supports ANSI styling and weird Unicode 💩 emojis – they won't break the layout.
- Host: GitHub
- URL: https://github.com/xpl/as-table
- Owner: xpl
- License: mit
- Created: 2016-08-07T12:55:25.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-09-25T15:51:17.000Z (about 1 year ago)
- Last Synced: 2024-07-18T19:46:45.735Z (4 months ago)
- Topics: ascii-tables, javascript, pretty-print, stringify
- Language: JavaScript
- Homepage: http://npmjs.com/package/as-table
- Size: 967 KB
- Stars: 61
- Watchers: 5
- Forks: 10
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# as-table
[![Build Status](https://travis-ci.org/xpl/as-table.svg?branch=master)](https://travis-ci.org/xpl/as-table) [![Coverage Status](https://coveralls.io/repos/github/xpl/as-table/badge.svg)](https://coveralls.io/github/xpl/as-table) [![npm](https://img.shields.io/npm/v/as-table.svg)](https://npmjs.com/package/as-table) [![dependencies Status](https://david-dm.org/xpl/as-table/status.svg)](https://david-dm.org/xpl/as-table) [![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/xpl/as-table.svg)](https://scrutinizer-ci.com/g/xpl/as-table/?branch=master)
A simple function that print objects and arrays as ASCII tables. Supports ANSI styling and weird 💩 Unicode emoji symbols (they won't break the layout), thanks to [`printable-characters`](https://github.com/xpl/printable-characters).
```bash
npm install as-table
```## Printing objects
```javascript
asTable = require ('as-table')asTable ([ { foo: true, string: 'abcde', num: 42 },
{ foo: false, string: 'qwertyuiop', num: 43 },
{ string: null, num: 44 } ])
```
```
foo string num
----------------------
true abcde 42
false qwertyuiop 43
null 44
```## Printing arrays
```javascript
asTable ([['qwe', '123456789', 'zxcvbnm'],
['qwerty', '12', 'zxcvb'],
['qwertyiop', '1234567', 'z']])
```
```
qwe 123456789 zxcvbnm
qwerty 12 zxcvb
qwertyiop 1234567 z
```## Limiting total width by proportionally trimming cells + setting columns delimiter
```javascript
asTable.configure ({ maxTotalWidth: 22, delimiter: ' | ' }) (data)
```
```
qwe | 1234… | zxc…
qwer… | 12 | zxc…
qwer… | 1234… | z
```## Right align
```javascript
asTable.configure ({ right: true }) (data)
```
```
foo bar baz
-----------------------------
qwe 123456789 zxcvbnm
qwerty 12 zxcvb
qwertyiop 1234567 z
```## Providing a custom object printer
```javascript
asTable.configure ({ print: x => (typeof x === 'boolean') ? (x ? 'yes' : 'no') : String (x) }) (data)
```
```
foo string num
--------------------
yes abcde 42
no qwertyuiop 43
null 44
```The callback also receives a field name (in case of objects) or a column index (in case of arrays):
```javascript
asTable = require ('as-table').configure ({
print (x, k) {
if (k === 'timestamp') return new Date (x).toGMTString()
return String (x)
}
})asTable ([ { name: 'A', timestamp: 1561202591572 },
{ name: 'B', timestamp: 1558524240034 } ])
```## Obtaining a pre-configured function
```javascript
asTable = require ('as-table').configure ({ maxTotalWidth: 25, delimiter: ' | ' })asTable (data)
```## Customizing the title rendering and the header separator
With string coloring by [`ansicolor`](https://github.com/xpl/ansicolor) (just for the demo purposes, any library will fit):
```javascript
asTable = require ('as-table').configure ({ title: x => x.bright, delimiter: ' | '.dim.cyan, dash: '-'.bright.cyan })console.log (
asTable ([ { foo: true, string: 'abcde', num: 42 },
{ foo: false, string: 'qwertyuiop'.bgMagenta.green.bright, num: 43 } ])
```