class PureRubyZip::ZipFileItem

Public Class Methods

new(filename, offset) click to toggle source
# File lib/pure_ruby_zip.rb, line 159
def initialize(filename, offset)
  @filename = filename
  @offset = offset
end

Public Instance Methods

get_decompressed_data(zipfile) click to toggle source
# File lib/pure_ruby_zip.rb, line 186
def get_decompressed_data(zipfile)
  zipfile.seek @offset
  # Skip to compression type
  skip zipfile, 8
  # Read compression type
  compression_type = read_int zipfile, 2
  data = if compression_type == 8
    handle_compressed zipfile
  else
    handle_uncompressed zipfile
  end
end
handle_compressed(zipfile) click to toggle source
# File lib/pure_ruby_zip.rb, line 177
def handle_compressed(zipfile)
  data = read_data zipfile
  b = Bitstream.new data
  z = ZipDecompressor.new
  z.decode_zipped_file b
end
handle_uncompressed(zipfile) click to toggle source
# File lib/pure_ruby_zip.rb, line 183
def handle_uncompressed(zipfile)
  read_data zipfile
end
read_data(zipfile) click to toggle source
# File lib/pure_ruby_zip.rb, line 163
def read_data(zipfile)
  # Skip to compressed length
  skip zipfile, 8
  # Get compressed length
  compressed_size = read_int zipfile, 4
  # Skip to extra data length
  skip zipfile, 6
  # Get extra data length
  extra_data_length = read_int zipfile, 2
  # Skip to file data
  skip zipfile, @filename.length + extra_data_length
  # Read file data
  zipfile.read compressed_size
end