class FirefoxZip::Files::Project
Constants
- MANIFEST_FILE_NAME
Attributes
icon[R]
icons[R]
manifest_data[R]
size[R]
Public Class Methods
new(zip_file_path)
click to toggle source
# File lib/firefox_zip/files/project.rb, line 10 def initialize(zip_file_path) return raise 'not zip file' unless File.exists? zip_file_path @zip_file_path = zip_file_path @size = File.size(@zip_file_path) Dir.mktmpdir do |dir| make_zip_files(@zip_file_path, dir) manifest_file = get_manifest_file(dir) @manifest_data = FirefoxZip::Parses::Manifest.new(manifest_file.read) manifest_file.close @icons = get_icons_file(@manifest_data, dir) @icon = get_icon_file(@manifest_data, dir) end end
Private Instance Methods
dir?(entry_name)
click to toggle source
# File lib/firefox_zip/files/project.rb, line 47 def dir?(entry_name) entry_name.match(/.+\/$/) != nil end
get_file(dir, target_file_name)
click to toggle source
# File lib/firefox_zip/files/project.rb, line 77 def get_file(dir, target_file_name) File.open("#{dir}/#{target_file_name}", 'r') end
get_icon_file(manifest_data, dir)
click to toggle source
# File lib/firefox_zip/files/project.rb, line 55 def get_icon_file(manifest_data, dir) get_file(dir, manifest_data.icon) end
get_icons_file(manifest_data, dir)
click to toggle source
# File lib/firefox_zip/files/project.rb, line 59 def get_icons_file(manifest_data, dir) icons = manifest_data.icons icons_file = [] icons.each do |icon| icon_size = icon[0] icon_file_name = icon[1] icon_file_name.slice!(0) # 先頭の/を削除 icons_file.push({ :size => icon_size, :file => get_file(dir, icon_file_name) }) end icons_file end
get_manifest_file(dir)
click to toggle source
# File lib/firefox_zip/files/project.rb, line 51 def get_manifest_file(dir) File.open("#{dir}/#{MANIFEST_FILE_NAME}", 'r') end
make_zip_files(file_path, dir)
click to toggle source
# File lib/firefox_zip/files/project.rb, line 29 def make_zip_files(file_path, dir) Zip::File.open(file_path) do |zip_file| zip_file.each do |entry| path = "#{dir}/#{entry.name}" # dir 作成 if dir?(path) && !File.exists?(path) FileUtils.mkdir_p(path) next end file = File.open(path, 'w') file.write(entry.get_input_stream.read) file.close end end end