class Gem::Package::TarReader
TarReader liest Tar-Dateien und ermöglicht die Iteration über deren Elemente
Öffentliche Klassenmethoden
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
Erstellt einen neuen TarReader für io und übergibt ihn als Block an den Block, falls vorhanden.
Ruft die Superklassenmethode
BasicObject::new aufSource
# File lib/rubygems/package/tar_reader.rb, line 39 def initialize(io) @io = io @init_pos = io.pos end
Erstellt einen neuen Tar-Datei-Reader für io, der pos, eof?, read, getc und pos= unterstützen muss
Öffentliche Instanzmethoden
Source
# File lib/rubygems/package/tar_reader.rb, line 47 def close end
Schließt die Tar-Datei
Source
# File lib/rubygems/package/tar_reader.rb, line 53 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
Iteriert über die Dateien im Tarball und übergibt jeden Eintrag
Auch als Alias genannt: each_entry
Source
# File lib/rubygems/package/tar_reader.rb, line 77 def rewind if @init_pos == 0 @io.rewind else @io.pos = @init_pos end end
Source
# File lib/rubygems/package/tar_reader.rb, line 90 def seek(name) # :yields: entry found = find do |entry| entry.full_name == name end return unless found yield found ensure rewind end
Durchsucht die Tar-Datei, bis sie den Eintrag mit dem Namen findet und übergibt ihn. Spult die Tar-Datei beim Beenden des Blocks an den Anfang zurück.