Easy table output for deno debugging, but you could probably do more with it, since its just a string.
Deno
import AsciiTable, { AsciiAlign } from 'https://deno.land/x/ascii_table/mod.ts';
const table1 = new AsciiTable('Title')
table1
.setHeadingAlign(AsciiAlign.CENTER)
.setHeading('#', 'Name', 'Age')
.addRow(1, 'Bob', 52)
.addRow(2, 'John', 34)
.addRow(3, 'Jim', 83)
const table2 = AsciiTable.fromJSON({
title: 'Title',
heading: [ 'id', 'name' ],
rows: [
[1, 'Bob'],
[1, 'John'],
[1, 'Jim']
]
})
console.log(table1.toString())
console.log(table2.toString())
Basic usage
const table = new AsciiTable('A Title')
table
.setHeading('', 'Name', 'Age')
.addRow(1, 'Bob', 52)
.addRow(2, 'John', 34)
.addRow(3, 'Jim', 83)
console.log(table.toString())
.----------------.
| A Title |
|----------------|
| | Name | Age |
|---|------|-----|
| 1 | Bob | 52 |
| 2 | John | 34 |
| 3 | Jim | 83 |
'----------------'
We can make a simple table without a title or headings as well.
const table = new AsciiTable()
table
.addRow('a', 'apple', 'Some longer string')
.addRow('b', 'banana', 'hi')
.addRow('c', 'carrot', 'meow')
.addRow('e', 'elephants')
console.log(table.toString())
.------------------------------------.
| a | apple | Some longer string |
| b | banana | hi |
| c | carrot | meow |
| e | elephants | |
'------------------------------------'
Table instance creator
title
- table title (optional, default null
)options
- table options (optional)
prefix
- string prefix to add to each line on renderNote: If an object is passed in place of the title
, the fromJSON
method will be used to populate the table.
Example:
const table = new AsciiTable('title')
title
- table titleheading
- heading array or argumentsrows
- array or arguments of column valuesconst table = AsciiTable.fromJSON({
title: 'Title',
heading: [ 'id', 'name' ],
rows: [
[ 1, 'Bob' ],
[ 2, 'Steve' ]
]
})
Shortcut to one of the three following methods
direction
- alignment direction (AsciiAlign.LEFT
, AsciiAlign.CENTER
, AsciiAlign.RIGHT
)val
- string to alignlen
- total length of created stringpad
- padding / fill char (optional, default ' '
)Example:
table.align(AsciiAlign.LEFT, 'hey', 7) // 'hey '
val
- string to alignlen
- total length of created stringpad
- padding / fill char (optional, default ' '
)Example:
table.alignLeft('hey', 7, '-') // 'hey----'
val
- string to alignlen
- total length of created stringpad
- padding / fill char (optional, default ' '
)Example:
table.alignCenter('hey', 7) // ' hey '
val
- string to alignlen
- total length of created stringpad
- padding / fill char (optional, default ' '
)Example:
table.alignRight('hey', 7) // ' hey'
Attempt to do intelligent alignment of provided val
, String
input will
be left aligned, Number
types will be right aligned.
val
- string to alignlen
- total length of created stringpad
- padding / fill char (optional, default ' '
)Example:
table.align(AsciiAlign.LEFT, 'hey', 7) // 'hey '
Create a new array at the given len, filled with the given value, mainly used internally
len
- length of arrayval
- fill value (optional)Example:
AsciiTable.arrayFill(4, 0) // [0, 0, 0, 0]
Set the border characters for rendering, if no arguments are passed it will be
reset to defaults. If a single edge
arg is passed, it will be used for all borders.
edge
- horizontal edges (optional, default |
)fill
- vertical edges (optional, default -
)top
- top corners (optional, default .
)bottom
- bottom corners (optional, default '
)Example:
var table = new AsciiTable('Stars')
table
.setBorder('*')
.setHeading('oh', 'look')
.addRow('so much', 'star power')
console.log(table.toString())
************************
* Stars *
************************
* oh * look *
************************
* so much * star power *
************************
Example:
table.removeBorder()
console.log('' + table)
# Fruit Thing
--- ----------- --------------------
a apple Some longer string
b banana hi
c carrot meow
e elephants
idx
- column index to aligndirection
- alignment direction, (AsciiAlign.LEFT
, AsciiAlign.CENTER
, AsciiAlign.RIGHT
)Example:
table
.setAlign(2, AsciiAlign.RIGHT)
.setAlign(1, AsciiAlign.CENTER)
console.log(table.toString())
.-------------------------------------.
| a | apple | Some longer string |
| b | banana | hi |
| c | carrot | meow |
| e | elephants | |
'-------------------------------------'
Alias to instance.setAlign(idx, AsciiAlign.LEFT)
Alias to instance.setAlign(idx, AsciiAlign.CENTER)
Alias to instance.setAlign(idx, AsciiAlign.RIGHT)
title
- table titleExample:
var table = new AsciiTable('Old Title')
table.setTitle('New Title')
Get the current title of the table
Example:
table.getTitle() // 'New Title'
direction
- table alignment directionExample:
Alias to instance.setTitleAlign(AsciiAlign.LEFT)
Alias to instance.setTitleAlign(AsciiAlign.CENTER)
Alias to instance.setTitleAlign(AsciiAlign.RIGHT)
iterator
- sorting method to run against the rowsExample:
table.sort(function(a, b) {
return a[2] - b[2]
})
console.log(table.toString())
.----------------.
| 2 | John | 34 |
| 1 | Bob | 52 |
| 3 | Jim | 83 |
'----------------'
Sorting shortcut for targeting a specific column
index
- column idx to sortiterator
- sorting method to run against column valuesExample:
// This is quivalent to the `sort` example above
table.sortColumn(2, function(a, b) {
return a - b
})
Set the column headings for the table, takes arguments the same way as addRow
heading
- heading array or argumentsExample:
table.setHeading('ID', 'Key', 'Value')
// or:
table.setHeading(['ID', 'Key', 'Value'])
direction
- Example:
Alias to instance.setHeadingAlignLeft(AsciiAlign.LEFT)
Alias to instance.setHeadingAlignLeft(AsciiAlign.CENTER)
Alias to instance.setHeadingAlignLeft(AsciiAlign.RIGHT)
Rows can be added using a single array argument, or the arguments if multiple args are used when calling the method.
row
- array or arguments of column valuesExample:
var table = new AsciiTable()
table
.addRow(1, 'Bob', 52)
.addRow([2, 'John', 34])
console.log(table.render())
.---------------.
| 1 | Bob | 52 |
| 2 | John | 34 |
'---------------'
Bulk addRow
operation
rows
- multidimentional array of rowsExample:
table.addRowMatrix([
[2, 'John', 34],
[3, 'Jim', 83]
])
Justify all columns to be the same width
enabled
- boolean for turning justify on or off, undefined
considered trueExample:
table
.addRow('1', 'two', 'three')
.setJustify()
console.log(table.toString())
.-----------------------.
| 1 | two | three |
'-----------------------'
Render the instance as a string for output
Alias: [valueOf
, render
]
Return the JSON representation of the table, this also allows us to call
JSON.stringify
on the instance.
Example:
var table = new AsciiTable('Title')
table
.setHeading('id', 'name')
.addRow(1, 'Bob')
.addRow(2, 'Steve')
console.log(table.toJSON())
console.log(JSON.stringify(table))
{
title: 'Title',
heading: [ 'id', 'name' ],
rows: [
[ 1, 'Bob' ],
[ 2, 'Steve' ]
]
}
{"title":"Title","heading":["id","name"],"rows":[[1,"Bob"],[2,"Steve"]]}
Populate the table from json object, should match the toJSON
output above.
Alias: [parse
]
Example:
var table = new AsciiTable().fromJSON({
title: 'Title',
heading: [ 'id', 'name' ],
rows: [
[ 1, 'Bob' ],
[ 2, 'Steve' ]
]
})
Clear / reset all table data
Alias: [reset
]
Reset all row data, maintains title and headings.
MIT © eeve