AMarshalを参考にしながらNaHiさんがruby-list:43425で紹介されたテストを通してみました。
- トラバーサでObjectを辿り、中間形式にする。
- 中間形式からObjectに戻す。
- 中間形式としてmarshal.cの書式で出力し、Marshal.loadで復元する。
が出来てるみたい。中間形式をある書式にするなにかもちょっと動いてるかもしれない。
Objectの辿り方と、書式化のそれぞれを独立してカスタマイズできるようにするべきである、と信じてabloadを書いてたことを思い出してきました。辿りをカスタマイズできると、複雑なObjectの一部にUndumpedがあったとき、そこだけを参照渡しにできるようになるかもしれない。
それにしてもAMarshal、すげーな。