Generates borderless text table strings suitable for printing to stdout. Fast. ๐
npm install text-table-fast
Generates borderless text table strings suitable for printing to stdout.
Fast.
๐
``shell`
npm i text-table-fast
`ts
import { textTable } from "text-table-fast";
console.log(
textTable([
["main", "0123456789abcdef"],
["staging", "fedcba9876543210"],
]),
);
`
`plaintext`
main 0123456789abcdef
staging fedcba9876543210
textTable takes in an array of arrays containing strings, numbers, or other printable values.
text-table-fast's textTable can take in an optional second parameter as an object with options
> ๐ These options are equivalent to text-table's options, but with expanded names.
- Default: []("center" | "left" | "right")[]
- Type:
The alignment for columns, in order.
These each default to "left".
`ts
import { textTable } from "text-table-fast";
console.log(
textTable(
[
["abc", "abcd", "ab"],
[1234, 12, 1234],
],
{
alignment: ["left", "center", "right"],
},
),
);
`
`plaintext`
abc abcd abc
1234 12 1234
- Default: " "string
- Type:
Characters to put between each column.
`ts
import { textTable } from "text-table-fast";
console.log(
textTable(
[
["abc", "abcd", "ab"],
[1234, 12, 1234],
],
{
horizontalSeparator: " | ",
},
),
);
`
`plaintext`
abc | abcd | abc
1234 | 12 | 1234
- Default: (value) => String(value).length(value: string) => number
- Type:
How to compute the length of strings, such as for stripping ANSI characters.
`ts
import color from "cli-color";
import { textTable } from "text-table-fast";
console.log(
textTable(
[
[color.red("abc"), color.blue("def")],
[12, 34],
],
{
stringLength: (value) => color.strip(value).length,
},
),
);
`
`plaintext`
\x1B31mabc\x1B[39m \x1B[34mdef\x1B[39m
12 34
text-table-fast has three advantages over text-table:
- It is fast in almost all scenarios, and significantly faster on larger tables.
- It is under active maintenance, whereas text-table hasn't been updated in over a decade..d.ts
- It's written in TypeScript and ships with its own types, whereas text-table requires @types/text-table for typings.
text-table-fast contains two meaningful optimizations over text-table:
- text-table includes usage of of an quadratically expensive /\s+$/; text-table-fast uses String.prototype.trimEnd instead.text-table
- executes a regular expression match on each row cell for its '.' (decimal) alignment option; text-table-fast will skip that match if and when decimal alignment support is added.
> ESLint issue to be filed soon with a performance comparison. โก๏ธ
Josh Goldberg โจ ๐ป ๐ ๐ ๐ค ๐ ๐ง ๐ ๐ง |
This package is a near-drop-in replacement for venerable text-table, which has served a plethora of projects -including ESLint- well for over a decade.
Many thanks to substack for creating the original text-table package! ๐
> ๐ This package was templated with create-typescript-app`.