Skip to content
ansi aware ascii art tables
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test
README.md
package.json
table.js

README.md

                   _  _                       _
                  (_)(_)                     | |
  __ _  ___   ___  _  _  ______   __ _  _ __ | |_
 / _` |/ __| / __|| || ||______| / _` || '__|| __|
| (_| |\__ \| (__ | || |        | (_| || |   | |_
 \__,_||___/ \___||_||_|         \__,_||_|    \__|

ascii-art-table.js

NPM version npm Travis

This module allows you to work with ansi strings in a style aware way, so you aren't constantly doing string manipulation and scanning when working with terminal strings. It offers a clean abstraction to build ascii-art utilities on top of.

Installation

npm install ascii-art-table

Usage

require('ascii-art-table')

To do anything with it, you'll need to include the library:

    const Table = require('ascii-art-table');

Table.create(ansiString, handler)

Map through an ansi string one character at a time, without any of those characters being styles. Kind: static property of ascii-art-table

Param Type Description
options object input string to map across
options.data Array of Arrays data to display
options.columns Array of Objects column configurations
options.bars String type: single, double, block, angles

Example

We can produce ASCII/ANSI tables in a similar manner to ascii-table, but with colors and styles!

To produce a standard box style (and it will attempt to be smart about column widths without truncating ansi codes):

        Table.create({
            width : 80,
            data : [ /* ... */ ]
        }, function(rendered){
            // use rendered text
        });

Table Example

If you add some additional options you get:

        Table.create({
            width : 80,
            data : [ /* ... */ ],
            verticalBar : ' ',
            horizontalBar : ' ',
            intersection : ' ',
            columns : [
                {
                    value : 'Product',
                    style : 'black+gray_bg'
                }, {
                    value : 'Maker',
                    style : 'white'
                }, {
                    value : 'Location',
                    style : 'white'
                }
            ]
        }, function(rendered){
            // use rendered text
        });

which will output:

Styled Table Example

You can also play with border colorings and built-in borders (single, double, block and angles) using the UTF box drawing characters

    Table.create({
        width : 80,
        data : [ /* ... */ ],
        bars : 'single',
        borderColor : 'bright_white'
    }, function(rendered){
        // use rendered text
    });

which will output:

Styled Table Example

To define this manually it would look like:

    Table.create({
        width : 80,
        data : [ /* ... */ ],
        bars : {
            'ul_corner' : '',
            'ur_corner' : '',
            'lr_corner' : '',
            'll_corner' : '',
            'bottom_t' : '',
            'top_t' : '',
            'right_t' : '',
            'left_t' : '',
            'intersection' : '',
            'vertical' : '',
            'horizontal' : '',
        },
        borderColor : 'bright_white',
    }, function(rendered){
        // use rendered text
    });

Another example:

    Table.create({
        width : 80,
        data : [ /* ... */ ],
        bars : 'double',
        headerStyle : 'yellow',
        dataStyle : 'bright_white',
        borderColor : 'gray'
    }, function(rendered){
        // use rendered text
    });

which will output:

Styled Table Example

You can’t perform that action at this time.