データの保存/読み込み in info ディレクトリ

info ディレクトリにデータを保存するためのクラス(?)を書いた。
黒魔術を使い手抜きをすることで、一行で出来た。

  function Somali (n)
    let(V,[l,s,j,t]=liberator.eval('[loadPref,savePref,json,Object]',storage.newObject))
      ({load:function(d)let(v=l(n,true,t))(V=v?v.value:d),
        save:function(v)s({store:true,name:n,serial:j.encode({value:v===undefined?V:v})})});

使い方は簡単。

  // ストレージオブジェクト生成
  let somali = new Somali('test-somali-storage');
  // 保存されているオブジェクトをロード
  // 引数はデフォルト値
  let setting = somali.load({eyes: 3, tails: 2});
  // 値をいじくる
  liberator.log(setting);
  setting.tails++;
  setting.date = new Date().toString();
  // 保存する
  // 条件がそろえば、save の引数は省略できる
  somali.save(setting);

_libly.js に入れようかと思ったけど、これはどうだろうか。駄目か。