Skip to content

Commit

Permalink
factor the CLI tool into a separate project (table-layout-cli)
Browse files Browse the repository at this point in the history
  • Loading branch information
75lb committed Jun 29, 2024
1 parent 7a1d8ba commit 5282f32
Show file tree
Hide file tree
Showing 9 changed files with 1,208 additions and 873 deletions.
214 changes: 14 additions & 200 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,203 +7,17 @@

# table-layout

Styleable plain-text table generator. Useful for formatting console output. Available as both a command-line tool and isomorphic Javascript library.
Styleable plain-text table generator. Useful for formatting console output. Available as both a [command-line tool](https://github.com/75lb/table-layout-cli) and isomorphic Javascript library.

## Synopsis
## Install as a library

Install the `table-layout` command-line app:

```
$ npm install --global table-layout
```

As input, table-layout takes a JSON file containing an array of objects.

```json
[
{
"country": "USA",
"GDP": "$19,485,394,000,000",
"population": "325,084,756"
},
{
"country": "China",
"GDP": "$12,237,700,479,375",
"population": "1,421,021,791"
},
{
"country": "Japan",
"GDP": "$4,872,415,104,315",
"population": "127,502,725"
}
]
```

The output of table-layout is a configurable plain-text table.

```
$ cat example/gdp.json | table-layout
USA $19,485,394,000,000 325,084,756
China $12,237,700,479,375 1,421,021,791
Japan $4,872,415,104,315 127,502,725
```

## Examples

Please see below for example usage on the command-line. Programmatic examples are further down the page.

### View Github issues

A quick way to see the latest issues on a repository (this example requires [jq](https://stedolan.github.io/jq/)).

```sh
$ curl -s https://api.github.com/repos/npm/npm/issues \
| jq 'map({ number, title, login:.user.login, comments })' \
| table-layout
```

```
10263 npm run start Slepperpon 4
10262 npm-shrinkwrap.json being ignored for a dependency of a maxkorp 0
dependency (2.14.9, 3.3.10)
10261 EPROTO Error Installing Packages azkaiart 2
10260 ENOENT during npm install with npm v3.3.6/v3.3.12 and lencioni 2
node v5.0.0
10259 npm install failed geraldvillorente 1
10258 npm moves common dependencies under a dependency on trygveaa 2
install
10257 [NPM3] Missing top level dependencies after npm install naholyr 0
10256 Yo meanjs app creation problem nrjkumar41 0
10254 sapnwrfc is not installing RamprasathS 0
10253 npm install deep dependence folder "node_modules" duyetvv 2
10251 cannot npm login w0ps 2
10250 Update npm-team.md louislarry 0
10248 cant install module I created nousacademy 4
10247 Cannot install passlib nicola883 3
10246 Error installing Gulp AlanIsrael0 1
10245 cannot install packages through NPM RoyGeagea 11
10244 Remove arguments from npm-dedupe.md bengotow 0
etc.
etc.
```

### Format an article into columns

Formatting long chunks of text into columns for display side by side.

```json
[
{
"column 1": "The Kingdom of Scotland was a state in north-west Europe traditionally said to have been founded in 843, which joined with the Kingdom of England to form a unified Kingdom of Great Britain in 1707. Its territories expanded and shrank, but it came to occupy the northern third of the island of Great Britain, sharing a land border to the south with the Kingdom of England. ",
"column 2": "Operation Barbarossa (German: Unternehmen Barbarossa) was the code name for Nazi Germany's invasion of the Soviet Union during World War II, which began on 22 June 1941. Over the course of the operation, about four million soldiers of the Axis powers invaded Soviet Russia along a 2,900 kilometer front, the largest invasion force in the history of warfare. In addition to troops, the Germans employed some 600,000 motor vehicles and between 600–700,000 horses."
}
]
```

Output:

```
$ cat example/two-columns.json | table-layout
The Kingdom of Scotland was a state in Operation Barbarossa (German: Unternehmen
north-west Europe traditionally said to Barbarossa) was the code name for Nazi
have been founded in 843, which joined Germany's invasion of the Soviet Union
with the Kingdom of England to form a during World War II, which began on 22
unified Kingdom of Great Britain in 1707. June 1941. Over the course of the
Its territories expanded and shrank, but operation, about four million soldiers of
it came to occupy the northern third of the Axis powers invaded Soviet Russia
the island of Great Britain, sharing a along a 2,900 kilometer front, the
land border to the south with the Kingdom largest invasion force in the history of
of England. warfare. In addition to troops, the
Germans employed some 600,000 motor
vehicles and between 600–700,000 horses.
```

Notice the columns above have equal width - this is the default style. You can give one or more columns a specific width using the `--width` option. In the example below we give "column 2" a specific width of 55 characters:

```
$ cat example/two-columns.json | table-layout --width "column 2: 55"
The Kingdom of Scotland was a Operation Barbarossa (German: Unternehmen Barbarossa)
state in north-west Europe was the code name for Nazi Germany's invasion of the
traditionally said to have Soviet Union during World War II, which began on 22
been founded in 843, which June 1941. Over the course of the operation, about
joined with the Kingdom of four million soldiers of the Axis powers invaded
England to form a unified Soviet Russia along a 2,900 kilometer front, the
Kingdom of Great Britain in largest invasion force in the history of warfare. In
1707. Its territories addition to troops, the Germans employed some 600,000
expanded and shrank, but it motor vehicles and between 600–700,000 horses.
came to occupy the northern
third of the island of Great
Britain, sharing a land
border to the south with the
Kingdom of England.
```

## Include configuration options with the input

Table-layout expects an array of objects as the input. However, if the input data is a plain object with the fields `options` and `data` defined then these properties will be used as the table options and data respectively. Example:

```
{
"options": {
"noTrim": true,
"columns": [
{ "name": "name", "width": 25 },
{ "name": "description", "width": 20 },
{ "name": "html_url", "width": 20, "break": true },
{ "name": "stargazers_count", "width": 5 }
]
},
"data": [
...
]
}
```


Please see [this folder]() for examples of input containing both options and data.

## Full command-line usage guide:

```
table-layout
Styleable plain-text table generator. Useful for formatting console output.
Synopsis
$ cat json-file | table-layout [options]
$ table-layout [options] json-file
Options
--file string A JSON input file to read. If not present, table-layout will look for input
on stdin.
-w, --width widths specify a list of column widths in the format '<column>:<width>', for
example:
$ cat <file> | table-layout --width "column 1: 10" "column 2: 30"
-l, --padding-left string One or more characters to pad the left of each column. Defaults to ' '.
-r, --padding-right string One or more characters to pad the right of each column. Defaults to ' '.
-h, --help
```

## Programmatic Usage

Using the table-layout API directly from Javascript gives you a little more power and flexibility over the output.

### Install as a library

Add table-output to your project:
Add table-layout to your project:

```
$ npm install --save table-layout
```

### Display an array of objects as a table
## Display an array of objects as a table

Trivial example. Read a JSON file from disk and output a table with a maximum width (in characters) of 60.

Expand All @@ -218,7 +32,7 @@ console.log(table.toString())

```

An example input file:
This is the example input file:

```json
[
Expand Down Expand Up @@ -269,7 +83,7 @@ This is the output:
with .log
```

### Cherry-picked and computed values
## Cherry-picked and computed values

Sometimes, your input data might contain a deeper structure or you want to transform or compute some values. Some example input data with structural depth and large numbers you'd like to reformat:

Expand Down Expand Up @@ -329,18 +143,18 @@ Output.
```
$ node example/computed-values.js
USA 19.485.394.000.000,00 € 325 Mio.
China 12.237.700.479.375,00 € 1,42 Mrd.
Japan 4.872.415.104.315,00 € 128 Mio.
USA 19.485.394.000.000,00 € 325 Mio.
China 12.237.700.479.375,00 € 1,42 Mrd.
Japan 4.872.415.104.315,00 € 128 Mio.
```

### Colour-scale conditional formatting
## Colour-scale conditional formatting

See [this file](https://github.com/75lb/table-layout/blob/master/example/colour-scale-formatting.js) for a example of colour-scale formatting (increasing intensity of red/green for more positive/negative values).

<img src="https://raw.githubusercontent.com/75lb/table-layout/master/example/colour-scale.jpg" width="600px" title="Colour-scale">

### API Reference
## API Reference

For the full API documentation, see [here](https://github.com/75lb/table-layout/blob/master/docs/API.md).

Expand All @@ -351,19 +165,19 @@ This library is compatible with Node.js, the Web and any style of module loader.
Within a Node.js CommonJS Module:

```js
const TableLayout = require('table-layout')
const Table = require('table-layout')
```

Within a Node.js ECMAScript Module:

```js
import TableLayout from 'table-layout'
import Table from 'table-layout'
```

Within a modern browser ECMAScript Module:

```js
import TableLayout from './node_modules/table-layout/dist/index.mjs'
import Table from './node_modules/table-layout/dist/index.mjs'
```

## See Also
Expand Down
10 changes: 0 additions & 10 deletions bin/cli.js

This file was deleted.

51 changes: 0 additions & 51 deletions bin/lib/cli-data.js

This file was deleted.

Loading

0 comments on commit 5282f32

Please sign in to comment.