Class: PureRubyZip::ZipFileItem

Inherits:
Object
  • Object
show all
Includes:
ZipHelpers
Defined in:
lib/pure_ruby_zip.rb

Instance Method Summary collapse

Methods included from ZipHelpers

#find_string, #read_int, #skip

Constructor Details

#initialize(filename, offset) ⇒ ZipFileItem

Returns a new instance of ZipFileItem.



159
160
161
162
# File 'lib/pure_ruby_zip.rb', line 159

def initialize(filename, offset)
  @filename = filename
  @offset = offset
end

Instance Method Details

#get_decompressed_data(zipfile) ⇒ Object



186
187
188
189
190
191
192
193
194
195
196
197
# 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) ⇒ Object



177
178
179
180
181
182
# 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) ⇒ Object



183
184
185
# File 'lib/pure_ruby_zip.rb', line 183

def handle_uncompressed(zipfile)
  read_data zipfile
end

#read_data(zipfile) ⇒ Object



163
164
165
166
167
168
169
170
171
172
173
174
175
176
# 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