From: "中村暁史" Date: 1999-05-19T10:57:33+09:00 Subject: [ruby-list:14387] Re: archive.rb お世話になっております。 A.中村です。 On Wed, 19 May 1999 07:13:59 +0900 Takashi Nishimoto wrote: > Archive.new(file) でないと統一されていないので、 ruby 的には美しくない > かなと思った次第です。 むぅ… 「定数なクラスで」newしようとするってところが まず話がずれる発端なわけですよねえ… ところであんまり関係ないけど作ってみました。 俺の初(正確には2番目?)Rubyっす(^^; なんかやっぱりdelphi臭いです(笑)。 #delphiにゃRegisterClassという手続きがある class Archive def Archive.myext; '___'; end def Archive.myformat?(filename) if filename[-3,3].downcase==myext then true else false end end def initialize(filename) super @filename=filename end end class LhaArchive < Archive def LhaArchive.myext; 'lzh'; end end class ZipArchive < Archive def ZipArchive.myext; 'zip'; end end class Archiver ArchiveClass=[] def Archiver.register_archive(archiveclass) ArchiveClass.push(archiveclass) end def Archiver.newarchive(filename) f=nil ArchiveClass.each{ |i| if i.myformat?(filename) then f=i.new(filename) end } f end end ###################### #使用例 Archiver.register_archive(LhaArchive) Archiver.register_archive(ZipArchive) p Archiver.newarchive("a.aaa") p Archiver.newarchive("B.LZH") p Archiver.newarchive("C.ZIP")