pretty
prettyモジュールは、JSHアプリケーションで値の書式設定とターミナル向けの出力を行います。
読みやすい表、バイト数や時間を表す文字列、長時間処理の進捗表示が必要な場合に便利です。
処理に合わせて、以下のAPIを選択します。
- 罫線付きの表、CSV、TSV、JSON、NDJSON、HTML、Markdown形式には、
Table()を使用します。 - 読みやすい数値や時間の文字列には、
Bytes()、Ints()、Durations()を使用します。 - 長時間実行する処理の進捗をターミナルに表示するには、
Progress()を使用します。
インストール
const pretty = require('pretty');Table()
テーブルwriterを作成します。
構文
Table(config)主なオプション
| オプション | 型 | 説明 | 既定値 |
|---|---|---|---|
format | String | box、csv、tsv、json、ndjson、html、mdなどの出力形式 | box |
boxStyle | String | light、double、bold、rounded、simple、compactなどの罫線スタイル | light |
rownum | Boolean | 先頭にROWNUM列を追加するかどうか | true |
timeformat | String | 日時形式 | default |
tz | String | local、UTC、またはIANAタイムゾーン名 | local |
precision | Number | 0以上の場合、浮動小数点数を丸める | -1 |
header | Boolean | ヘッダー行を出力するかどうか | true |
footer | Boolean | フッターまたはキャプションを出力するかどうか | true |
pause | Boolean | ターミナルでページごとに一時停止するかどうか | true |
nullValue | String | null値を表示する文字列 | NULL |
stringEscape | Boolean | 表示できない文字を\uXXXXにエスケープ | false |
主なメソッド
appendHeader(values)ヘッダー行を追加appendRow(row)単一行を追加appendRows(rows)複数行を追加append(values)行または行の一覧を追加row(...values)テーブルの変換規則を適用した行を作成render()現在の出力結果を文字列で返すclose()残りの行を出力し、最後の結果を返すresetRows()バッファー内の行をクリアpauseAndWait()ページ表示モードでキー入力を待つ
使用例: 基本的な罫線付きテーブル
| |
出力:
┌────────┬───────┬─────┐
│ ROWNUM │ NAME │ AGE │
├────────┼───────┼─────┤
│ 1 │ Alice │ 30 │
│ 2 │ Bob │ 25 │
└────────┴───────┴─────┘使用例: 浮動小数点数の丸め
| |
出力:
┌────────┬────────┬───────┐
│ ROWNUM │ ITEM │ PRICE │
├────────┼────────┼───────┤
│ 1 │ Apple │ 1.23 │
│ 2 │ Orange │ 2.57 │
└────────┴────────┴───────┘使用例: 時刻の書式設定
| |
出力:
┌────────┬───────┬─────────────────────┐
│ ROWNUM │ EVENT │ TIME │
├────────┼───────┼─────────────────────┤
│ 1 │ Start │ 2024-03-15 14:30:45 │
│ 2 │ End │ 2024-03-15 18:20:30 │
└────────┴───────┴─────────────────────┘組み込みのtimeformatキーワードは、DATETIME、DATE、TIME、RFC3339、RFC1123、
ANSIC、KITCHEN、STAMP、STAMPMILLI、STAMPMICRO、STAMPNANOです。
必要に応じて、Go形式の時刻レイアウト文字列を直接渡すこともできます。
使用例: 罫線スタイル
| |
出力例の一部を以下に示します。
light:
┌─────┐
│ COL │
├─────┤
│ Val │
└─────┘
double:
╔═════╗
║ COL ║
╠═════╣
║ Val ║
╚═════╝
compact:
COL
─────
Val 使用例: JSON出力
| |
出力:
{"columns":["ID","Status","Value"],"rows":[[1,"active",42.5],[2,"pending",31.2]]}使用例: CSV出力
| |
出力:
Name,Score
Alice,98
Bob,87使用例: TSV出力
| |
出力:
Name Score
Alice 98
Bob 87使用例: NDJSON出力
| |
出力:
{"Name":"Alice","Score":98}
{"Name":"Bob","Score":87}使用例: Markdown出力
| |
出力:
| Name | Score |
| ----- | ----: |
| Alice | 98 |
| Bob | 87 |使用例: 表示できない文字のエスケープ
| |
stringEscapeがtrueの場合、表示できない文字をエスケープしたUnicode文字列で表示します。
MakeRow()
指定したサイズの空の行配列を作成します。
構文
MakeRow(size)使用例
| |
Progress()
ターミナル用の進捗writerを作成します。
構文
Progress(options)オプション
showPercentageBoolean百分率を表示するかどうか。既定値trueshowETABoolean予想残り時間を表示するかどうか。既定値trueshowSpeedBoolean処理速度を表示するかどうか。既定値trueupdateFrequencyNumber更新間隔(ミリ秒)。既定値250trackerLengthNumberプログレスバーの長さ。既定値20
返されるwriterは、tracker(options)を提供します。
trackerはmessageとtotalを受け取り、increment(n)、value()、markAsDone()、isDone()に対応しています。
使用例
| |
この機能は、対話型のターミナルセッション用です。テストや非対話実行では、バーの表示そのものより、
isDone()の状態に達することが重要です。
Bytes()
バイト数を読みやすい文字列に整形します。
構文
Bytes(value)使用例
| |
出力:
512B
1.5KB
1.0MB
1.0GBInts()
整数を桁区切り付きの文字列に整形します。
構文
Ints(value)使用例
| |
出力:
1,234,567,890
0
-999Durations()
ナノ秒単位の時間を、短く読みやすい文字列に整形します。
構文
Durations(nanoseconds)使用例
| |
出力:
1.23μs
2.34ms
3.01s
1h 1m
1d 0h60秒未満の値は、μs、ms、sなどの単位で小数表示します。
それ以上の時間は、2m 5s、1h 1m、2d 0hのように上位2つの単位だけを表示します。
Align
詳細な列設定で使用する配置定数を提供します。
使用できる定数は、default、left、center、justify、right、autoです。
ターミナルヘルパー
このモジュールは、以下のヘルパーも提供します。
isTerminal()stdinがターミナルに接続されているかどうかを返すgetTerminalSize()ターミナルの幅と高さを返すpauseTerminal()キー入力を待ち、qまたはQならfalseを返すparseTime(value, format, tz)文字列を時刻値として解析
これらのヘルパーは、主にTable()やProgress()を使った対話型ターミナルツールの作成に便利です。