34 个版本
0.12.1 | 2020 年 11 月 24 日 |
---|---|
0.11.0 | 2020 年 6 月 5 日 |
0.9.1 | 2020 年 2 月 14 日 |
0.9.0 | 2019 年 9 月 22 日 |
0.2.6 | 2017 年 7 月 7 日 |
186 在 值格式化
86 每月下载量
41KB
1K SLoC
目录
ppbert
一个命令行工具,用于使用 Erlang 的 外部项格式 美化打印结构。输入从 stdin 或文件读取,输出到 stdout,使 ppbert 成为 shell 管道的好选择。
目前,ppbert 支持以下外部项格式的子集
- 小整数(标记:97);
- 整数(标记:98);
- 浮点数(标记:70,99);
- 大整数(标记:110,111);
- Latin-1 原子(标记:100,115);
- UTF-8 原子(标记:118,119);
- 字符串(标记:107);
- 二进制(标记:109);
- 元组(标记:104,105);
- 列表(标记:106,108);
- 映射(标记:116)。
用法
$ ppbert --help
ppbert 0.9.0
Options:
-V, --version display version
-h, --help display this help
-i, --indent NUM indent with NUM spaces
-m, --per-line NUM print at most NUM basic terms per line
-p, --parse parse only, not pretty print
-2, --bert2 parse .bert2 files
-d, --disk-log parse disk_log files
-v, --verbose show diagnostics on stderr
-j, --json print as JSON
-t, --transform-proplists
convert proplists to JSON objects
$ ppbert mini_dict.bert
[
{host, "localhost"},
{port, 80},
{
headers,
[
{
<<"X-Real-Ip">>,
{127, 0, 0, 1}
},
{<<"Keep-alive">>, true}
]
}
]
$ printf "\x83\x77\x04atom" | ppbert
atom
性能
ppbert 用 Rust 编写,并在性能上比使用 Erlang 的 erlang:binary_to_term/1
和 io:format/2
有显著提升。
$ cat erl_ppbert
#!/usr/bin/env escript
main(Args) ->
lists:foreach(fun (Filename) ->
{ok, Binary} = file:read_file(Filename),
io:format("~p~n", [binary_to_term(Binary)])
end, Args).
$ du large.bert
96M large.bert
$ time ./erl_ppbert large.bert >/dev/null
real 0m43.017s
user 0m38.846s
sys 0m4.345s
$ time ppbert large.bert >/dev/null
real 0m1.802s
user 0m1.251s
sys 0m0.549s
依赖关系
~3.5MB
~47K SLoC