OpenSSL などの巨大な拡張ライブラリは複数のファイルにモジュールやクラスの定義が散らばっている。なので、単純に RDoc を書いていくだけでは rdoc 実行時にエラーになる。例えば OpenSSL::Cipher::Cipher で言えば OpenSSL と OpenSSL::Cipher と OpenSSL::Cipher::Cipher が同じファイルで定義されていなくてはいけない。けど 実際には同じファイルでは定義されていない。というわけで、ossl_cipher.c に以下のようにコメントとして OpenSSL の定義を書き加えないといけない。
Init_ossl_cipher(void) { /* mOSSL = rb_define_module("OpenSSL"); */ mCipher = rb_define_module_under(mOSSL, "Cipher"); eCipherError = rb_define_class_under(mOSSL, "CipherError", eOSSLError); cCipher = rb_define_class_under(mCipher, "Cipher", rb_cObject);
ハマった。Ruby のコードでは外側のモジュールやクラスは同じファイルを見れば、必ず分かるから、
module OpenSSL module Cipher class Cipher
こういった別のファイルを見に行かないといけない状況を、rdoc は想定していないようだ。
上のような回避方法はあまりにダサいし、ドキュメントを書く側の負担になるので以下のようなパッチを書いた。
Index: parse_c.rb =================================================================== RCS file: /src/ruby/lib/rdoc/parsers/parse_c.rb,v retrieving revision 1.25 diff -u -1 -r1.25 parse_c.rb --- parse_c.rb 9 Sep 2004 02:47:35 -0000 1.25 +++ parse_c.rb 28 Jan 2005 02:45:45 -0000 @@ -171,2 +171,3 @@ + @@enclosure_classes = {} @@known_bodies = {} @@ -210,3 +211,3 @@ if in_module - enclosure = @classes[in_module] + enclosure = @classes[in_module] || @@enclosure_classes[in_module] unless enclosure @@ -231,2 +232,3 @@ @classes[var_name] = cm + @@enclosure_classes[var_name] = cm @known_classes[var_name] = cm.full_name
@known_classes にも同様の対処が必要なんだろうか。後で ruby-core に投げようっと。
フランス語で書かれた専門書をずっと探していて、出来れば英訳されたものが良かったんだけど、絶版なので、フランス語でいいやと www.amazon.fr を探してみたけどなかった。
ふとした偶然で www.amazon.ca に探していた本を見つけた。そうかあ、カナダは盲点だった。地理で習ったよ、ケベック州。行ったことないけど。
本は大抵アマゾンで買うようになった。電車の中で読む文庫や新書は本屋で買うこともあるけど。あとまんがは本屋で買う。
というか、梅田の紀伊国屋は不快過ぎる。英会話の勧誘がうざい。なぜ客にあそこまで不快な思いを強いるのか理解に苦しむ。これほど不快なのは寒空の下に客を外で並ばせる銀行の ATM くらいだ。本屋も銀行もどちらも規制産業なのは偶然だろうか。
あと客が多すぎる。邪魔。本も多すぎ。(僕にとって)どうでもいい本が多すぎる。大量の本をただ並べただけというインターフェースは非常に不便だ。
本を検索するのに順番を待たないといけない。
ネットで検索できない。ネットでの評判を見られない。www.amazon.com での評価が見られない。
本を読むのは好きだけど、本屋は好きではなくなってきている。どうか www.amazon.co.jp は潰れないでいて欲しい。というようなことを、文藝春秋の2月号を読んで思った。
アマゾンが潰れたら http://www.7andy.jp/all (元 http://www.esbooks.co.jp/ )を使うかな。
関係ないけど、フィッシング詐欺が流行っている現在、「 http://www.esbooks.co.jp/ から http://www.7andy.jp/all にサイトの URL が変わりました。」なんていうメールを出すのは、非常識だなあと思った。
大学の教科書だってひどいものだ。大学に入ってみれば、教科書の多くは(いくつかの輝ける例外を除いては) その分野の第一人者が書いたものじゃないことがわかるだろう。
うっそだー。どの分野の話だよ。一流の研究者が書いた本が必ずしも良くできているとは限らないという方が問題なんだけど。
おもしろい。
名作 moe の変身三部作の OP が MAXI CD に!! 伝説の能登麻美子『ヒットをねらえ!』がシングルカットですよ!! 買うしか。
最近のコメント