Class: Glark::ZipFile
- Inherits:
-
ArchiveFile
show all
- Includes:
- Logue::Loggable
- Defined in:
- lib/glark/io/file/zip_file.rb
Instance Method Summary
collapse
Methods inherited from ArchiveFile
#each, #list, #search, #search_archive_file, #search_list
Constructor Details
#initialize(fname, range, &blk) ⇒ ZipFile
Returns a new instance of ZipFile.
12
13
14
15
16
|
# File 'lib/glark/io/file/zip_file.rb', line 12
def initialize fname, range, &blk
super fname, range
check_rubyzip
end
|
Instance Method Details
#check_rubyzip ⇒ Object
30
31
32
33
|
# File 'lib/glark/io/file/zip_file.rb', line 30
def check_rubyzip
check_rubyzip_exists
check_rubyzip_version
end
|
#check_rubyzip_exists ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/glark/io/file/zip_file.rb', line 35
def check_rubyzip_exists
begin
require 'zip'
rescue LoadError => e
msg = "error loading zip gem: #{e}\n"
msg << "to install this dependency, run 'gem install rubyzip'"
info Rainbow::Presenter.new("msg: #{msg}").color(:red)
raise msg
end
check_rubyzip_version
end
|
#check_rubyzip_version ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/glark/io/file/zip_file.rb', line 49
def check_rubyzip_version
require 'zip/version'
reqver = '1.1.4'
reqnum = version_to_number reqver
currnum = version_to_number Zip::VERSION
if currnum < reqnum
msg = "error: support for zip files requires rubyzip version >= #{reqver}; current version is #{Zip::VERSION}"
info Rainbow::Presenter.new("msg: #{msg}").color(:red)
raise msg
end
end
|
#entry_name(entry) ⇒ Object
26
27
28
|
# File 'lib/glark/io/file/zip_file.rb', line 26
def entry_name entry
entry.name
end
|
#get_reader ⇒ Object
18
19
20
|
# File 'lib/glark/io/file/zip_file.rb', line 18
def get_reader
@zipfile = Zip::File.new @fname
end
|
#read(entry) ⇒ Object
22
23
24
|
# File 'lib/glark/io/file/zip_file.rb', line 22
def read entry
@zipfile.read entry
end
|
#version_to_number(ver) ⇒ Object
61
62
63
64
|
# File 'lib/glark/io/file/zip_file.rb', line 61
def version_to_number ver
vernums = ver.split('.')
num = vernums.inject(0) { |s, n| 1000 * s + n.to_i }
end
|