blog.bouzuya.net

2021-05-28 rust365 で bejson 0.2.0 をつくった

rust365 (2021-05-14) で bejson 0.2.0 をつくった (bouzuya/rust-sandbox) 。

bejson は JSON にコマンドの実行結果を埋め込めるコマンドだ。たとえば ↓ のように使える。

$ cat test.bejson
{
    "foo": "bar",
    "greeting": $`echo 'Hello'`,
    "date": $`date "+%Y-%m-%d" | awk '{ printf $0 }'`
}

$ bejson test.bejson
{"foo":"bar","greeting":"Hello\n","date":"2021-05-28"}

引数には bejson 形式のファイルを取る。

bejson 形式は JSON の構文を拡張したもの。具体的には $`command` という構文を追加している。 JavaScript のタグ付きテンプレート構文でタグ名を $ にしたイメージで良い。エスケープシーケンスは文字列のものに \` を追加している。

例の通り $`command` で指定された command を実行してその結果を文字列として展開する。

こういう JSON の一部にコマンドの実行結果を埋め込むのはもっと良いやりかたがありそう。ただぼくがそれを知らないのと crates:nom の練習のためにつくった。

bejson と b new (bouzuya/rust-sandbox) を組み合わせていろいろやろうとしている。


『三体 II 黒暗森林 下』を読んだ。これで三体 III を読みはじめる準備ができた。


今日のコミット。