I must be missing something :o/

#<Parse:0x000001008a5920>
parse.rb:14:in `open': undefined method `close' for 
#<Parse:0x000001008a5920 @io=#<File:/etc/passwd>> (NoMethodError)
        from parse.rb:38:in `<main>'

Test code below.


Martin

require 'zlib'
require 'pp'

class Parse
  def self.open(*args)
    ios = self.zopen(*args)

    if block_given?
      begin
        yield ios
      ensure
        ios.close
      end
    else
      return ios
    end
  end

  def initialize(io)
    @io = io
  end

  private

  def self.zopen(*args)
    ios = File.open(*args)

    begin
      ios = Zlib::GzipReader.new(ios)
    rescue
      ios.rewind
    end

    self.new(ios)
  end
end

Parse.open("/etc/passwd") do |ios|
  puts ios
end
-- 
Posted via http://www.ruby-forum.com/.