dictknifeのmkdictに変数を追加した

github.com

昨日のこの記事の続き。

簡単な変数を使える機能を追加した。概ね以下のような感じ。

name description
@ 変数に値を代入
& 変数の値を参照

obという変数に代入して2つの箇所で使っている。

$ dictknife mkdict @ob/name foo @ob/age 40 name bar age 20 parent "&ob" ";" name boo age 18 parent "&ob"
[
  {
    "name": "bar",
    "age": 20,
    "parent": {
      "name": "foo",
      "age": 40
    }
  },
  {
    "name": "boo",
    "age": 18,
    "parent": {
      "name": "foo",
      "age": 40
    }
  }
]

escape

それぞれ@@と&&でescapeできる。

$ dictknife mkdict @x val use "&x" dont-ref "&&x" @@dont-assign "v"
{
  "use": "val",
  "dont-ref": "&x",
  "@dont-assign": "v"
}