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