module ZipUtils

Public Instance Methods

unzip(zipfile_name) click to toggle source
# File lib/zip_utils.rb, line 7
def unzip zipfile_name
  temp_dirname = @settings['ziptemp']
  FileUtils.rm_r temp_dirname if File.directory?(temp_dirname)
  content = []
  Zip::File.open(zipfile_name) do |zip_file|
    zip_file.each do |entry|
      entry.extract("#{temp_dirname}/#{entry.name}")
      input_stream = entry.get_input_stream
      content << input_stream.read unless input_stream == Zip::NullInputStream
    end  
  end
  content
end
zip(source_dirname, target_filename) click to toggle source
# File lib/zip_utils.rb, line 21
def zip source_dirname, target_filename
  FileUtils.rm_f target_filename
  entries = Dir.entries(source_dirname); entries.delete("."); entries.delete("..")
  io = Zip::File.open(target_filename, Zip::File::CREATE);
  writeEntries(source_dirname, entries, "", io)
  io.close();
end
zip_entries(zipfile_name) click to toggle source
# File lib/zip_utils.rb, line 29
def zip_entries zipfile_name
  entry_names = []
  Zip::File.open(zipfile_name) do |zip_file|
    zip_file.each do |entry|
      entry_names << entry.name
    end
  end
  entry_names
end

Private Instance Methods

writeEntries(source_dirname, entries, path, io) click to toggle source
# File lib/zip_utils.rb, line 41
def writeEntries(source_dirname, entries, path, io)
  entries.each { |e|
    zipFilePath = path == "" ? e : File.join(path, e)
    diskFilePath = File.join(source_dirname, zipFilePath)
    if  File.directory?(diskFilePath)
      io.mkdir(zipFilePath)
      subdir =Dir.entries(diskFilePath); subdir.delete("."); subdir.delete("..")
      writeEntries(source_dirname, subdir, zipFilePath, io)
    else
      io.get_output_stream(zipFilePath) { |f| f.puts(File.open(diskFilePath, "rb").read())}
    end
  }
end