class Gem::Package::TarReader
TarReader
reads tar files and allows iteration over their items
Public Class Methods
Source
# File lib/rubygems/package/tar_reader.rb, line 19 def self.new(io) reader = super return reader unless block_given? begin yield reader ensure reader.close end nil end
Creates a new TarReader
on io
and yields it to the block, if given.
Calls superclass method
BasicObject::new
Source
# File lib/rubygems/package/tar_reader.rb, line 37 def initialize(io) @io = io @init_pos = io.pos end
Creates a new tar file reader on io
which needs to respond to pos, eof?, read, getc and pos=
Public Instance Methods
Source
# File lib/rubygems/package/tar_reader.rb, line 51 def each return enum_for __method__ unless block_given? until @io.eof? do begin header = Gem::Package::TarHeader.from @io rescue ArgumentError => e # Specialize only exceptions from Gem::Package::TarHeader.strict_oct raise e unless e.message.match?(/ is not an octal string$/) raise Gem::Package::TarInvalidError, e.message end return if header.empty? entry = Gem::Package::TarReader::Entry.new header, @io yield entry entry.close end end
Iterates over files in the tarball yielding each entry
Also aliased as: each_entry
Source
Source
# File lib/rubygems/package/tar_reader.rb, line 88 def seek(name) # :yields: entry found = find do |entry| entry.full_name == name end return unless found yield found ensure rewind end
Seeks through the tar file until it finds the entry
with name
and yields it. Rewinds the tar file to the beginning when the block terminates.