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.
Kind regards
robert
···
--
use.inject do |as, often| as.you_can - without end
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
···
On May 20, 9:15 am, "Robert Klemme" <shortcut...@googlemail.com> 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.
does anybody else think this (or something similar) would be a useful
extension to zlib?
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.
I don't believe so. ARGFZ plays the same role as ARGF and your argument would apply there as well. But it's not the case since option processing is typically done *before* ARGF / ARGFZ are employed (see OptionParser documentation for examples).
While we're on the topic of zlib, see zliby:
http://rubyforge.org/projects/zliby/
I am not sure I get your point here. Can you elaborate?
Kind regards
robert
···
On 20.05.2008 18:19, Daniel Berger wrote:
On May 20, 9:15 am, "Robert Klemme" <shortcut...@googlemail.com> > wrote: