From: Daniel Berger Date: 2008-05-21T01:19:17+09:00 Subject: Re: Extension of zlib On May 20, 9:15 am, "Robert Klemme" wrote: > Hi, > > does anybody else think this (or something similar) would be a useful > extension to zlib? > > file zliba.rb: > > require 'zlib' > > # Conveniently process a number of files that may > # be a mixture of gzip compressed and uncompressed > # files. > > ARGFZ = Class.new do >   include Enumerable > >   def each(&b) >     ::ARGV.each do |arg| >       if arg == "-" >         $stdin.each(&b) >       else >         io = ::Zlib::GzipReader.open(arg) rescue ::File.open(arg) >         begin >           io.each(&b) >         ensure >           io.close >         end >       end >     end >     self >   end > >   # addional methods for gets etc. could be added >   # but seeking is too hard to be possible > > end.new > > Example usage, file catz.rb: > > #!/bin/env ruby > > require 'zliba' # this would be 'zlib' once this is integrated > > ARGFZ.each do |line| >   puts line > end > > Then on shell prompt: > > catz.rb foo foo.gz > > Will print all lines from foo and then from foo.gz. This seems like something that belongs in a custom option handler, not in zlib directly, especially since I strongly suspect you're going to break some option parsers with that code. While we're on the topic of zlib, see zliby: http://rubyforge.org/projects/zliby/ Regards, Dan