2012年4月 6日

[ruby-list:48683] klass とMarshal.load(Marshal.dump klass) が同じにならない

出沢です

本題に入る前にメタな質問を。

実装レベルの仕様書を紙に出したい、できるだけメンテフリーにしたいと思って
いろいろ試しています。ご助言いただけるとうれしいです。

本題は二つあります。

rdoc でhtml化したオンラインのマニュアルも試みているのですが、これを
利用できないか、ということで、rdoc 3.9.4 をベースに
RDoc::Generator::Latex を試作しています。
一応 platexを通るようになって、リファクタ、使いやすくするためのoption作
り、LaTeXの表現の手直し、を始めた所ですが、

1: このgenerator をrdoc で使えるようにするにはどうしたら良いでしょう
  rdoc.rb 内でrequire すれば使えることは分かるのですが、
  それですと rdoc.rb を書き直すか cp して専用を作るかしないと。
  rdocやrdoc.rb自体に手を入れずに、例えば
rdoc -r generator/latex
のように行う方法はないでしょうか。

2: リファクタ中に思わぬトラブルがあって調べていて気がついたのですが
klass と RDoc::RI::Store#save_class klass 内で作っている
     marshal = Marshal.dump klass
を Marshal.load marshal したものと内容が変わります。
klass == Marshal.load(Marshal.dump klass)
これは trueなのですが、ppした中身がちがいます。

>>>>>
  klass を pp するとこのようになり

[class UbePlan < ActiveRecord::Base
includes:

attributes:

methods:
[RDoc::AnyMethod UbePlan::make_plans_from_lips public
text:
"def self.make_plans_from_lips"
(以下省略)
  RDoc::AnyMethod#comment が String
=====
Marshal.load(Marshal.dump klass) を ppするとこうなります

[class UbePlan < ActiveRecord::Base
includes:

attributes:

methods:
[RDoc::AnyMethod UbePlan::make_plans_from_lips public],
[RDoc::AnyMethod UbePlan::make_plans_from_params public],
(以下省略)
RDoc::AnyMethod#comment が RDoc::Markup::Document
<<<<<

リファクタ中にぶつかったトラブルは、これと関わりはなかった
のですが、この違いが気になって質問させていただく次第です。

以上、2点+アルファよろしくお願いします。

投稿者 xml-rpc : 2012年4月 6日 20:55
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/109384
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。