From: Tanaka Akira Date: 2006-09-14T08:57:29+09:00 Subject: [ruby-dev:29576] Re: digest.rb In article <86zmd34h92.knu@iDaemons.org>, "Akinori MUSHA" writes: >  ふと見れば、 md5.rb と sha1.rb がまだ残っていました。 > >  1.9 でDigest の使い勝手が変わることですし、このタイミングで > (1.9 からは)消してすっきりしたいのですが、どうでしょうか。 基本的に賛成ではあるのですが、使い勝手が悪くなる (feature名 が長くなる) 方向の変更なので、気に入らない人もいそうですね。 >  File.open() から open() にしたのは、URIやパイプも受け入れる > 意図でしょうか。file() という名前ならば、ファイル名以外を渡す > 使い方をされることには違和感を覚えます。 はい。URI は考慮していました。パイプは適切な用法が思い付かな いのであんまり考えてません。 違和感があるというのはわかります。 >  上のメソッド名の件で read() というのを思いつき、その名前から > 逆算してファイル名または IO を取る仕様はどうかと思ったのですが、 > 仰る通り、使いたいシーンがなかなか思い浮かばないので保留します。 > >  open() の引数になるもの一般や IO を引数に取るメソッドが必要と > なったら、名前とともにまた考えることにしましょう。 とすると、File.open に戻してこんなかんじでしょうか。 Index: ext/digest/lib/digest.rb =================================================================== RCS file: /src/ruby/ext/digest/lib/digest.rb,v retrieving revision 1.1 diff -u -p -r1.1 digest.rb --- ext/digest/lib/digest.rb 13 Sep 2006 16:03:23 -0000 1.1 +++ ext/digest/lib/digest.rb 13 Sep 2006 23:41:36 -0000 @@ -5,4 +5,17 @@ module Digest autoload "SHA256", "digest/sha2" autoload "SHA384", "digest/sha2" autoload "SHA512", "digest/sha2" + + class Base + def self.file(name) + digest = self.new + File.open(name) {|f| + buf = "" + while f.read(16384, buf) + digest.update buf + end + } + digest + end + end end -- [田中 哲][たなか あきら][Tanaka Akira]