zip-container 3.0.2 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -1
  3. data/Licence.rdoc +1 -1
  4. data/Rakefile +15 -12
  5. data/examples/create-zip-container +7 -8
  6. data/examples/zip-container-info +4 -4
  7. data/lib/zip-container/container.rb +5 -7
  8. data/lib/zip-container/dir.rb +8 -11
  9. data/lib/zip-container/entries/directory.rb +5 -5
  10. data/lib/zip-container/entries/entry.rb +19 -15
  11. data/lib/zip-container/entries/file.rb +10 -9
  12. data/lib/zip-container/entries/managed.rb +11 -11
  13. data/lib/zip-container/entries/reserved.rb +2 -2
  14. data/lib/zip-container/exceptions.rb +4 -2
  15. data/lib/zip-container/file.rb +16 -16
  16. data/lib/zip-container/util.rb +3 -3
  17. data/lib/zip-container/version.rb +4 -3
  18. data/version.yml +2 -2
  19. data/zip-container.gemspec +30 -27
  20. metadata +41 -83
  21. data/.gitignore +0 -9
  22. data/.ruby-env +0 -1
  23. data/.ruby-gemset +0 -1
  24. data/.ruby-version +0 -1
  25. data/.travis.yml +0 -19
  26. data/test/data/compressed_mimetype.container +0 -0
  27. data/test/data/dirs/dir-mimetype/mimetype/.gitkeep +0 -1
  28. data/test/data/dirs/empty/mimetype +0 -1
  29. data/test/data/dirs/managed/dir/.gitkeep +0 -0
  30. data/test/data/dirs/managed/greeting.txt +0 -1
  31. data/test/data/dirs/managed/mimetype +0 -1
  32. data/test/data/dirs/null/.gitkeep +0 -1
  33. data/test/data/empty.container +0 -0
  34. data/test/data/empty.zip +0 -0
  35. data/test/data/example.container +0 -0
  36. data/test/data/null.file +0 -0
  37. data/test/data/subclassed.container +0 -0
  38. data/test/helpers/entry_lists.rb +0 -35
  39. data/test/tc_create_dir.rb +0 -56
  40. data/test/tc_create_file.rb +0 -140
  41. data/test/tc_exceptions.rb +0 -105
  42. data/test/tc_managed_entries.rb +0 -446
  43. data/test/tc_read_dir.rb +0 -90
  44. data/test/tc_read_file.rb +0 -118
  45. data/test/tc_reserved_names.rb +0 -334
  46. data/test/tc_util.rb +0 -67
  47. data/test/ts_container.rb +0 -59
@@ -30,7 +30,7 @@
30
30
  #
31
31
  # Author: Robert Haines
32
32
 
33
- #
33
+ ##
34
34
  module ZipContainer
35
35
 
36
36
  # This module provides support for reserved names.
@@ -70,7 +70,7 @@ module ZipContainer
70
70
  # Zip::Entry object can be passed in here.
71
71
  def reserved_entry?(entry)
72
72
  name = entry_name(entry)
73
- reserved_names.map { |n| n.downcase }.include? name.downcase
73
+ reserved_names.map(&:downcase).include? name.downcase
74
74
  end
75
75
 
76
76
  protected
@@ -30,7 +30,7 @@
30
30
  #
31
31
  # Author: Robert Haines
32
32
 
33
- #
33
+ ##
34
34
  module ZipContainer
35
35
 
36
36
  # The base of all exceptions raised by this library.
@@ -43,6 +43,7 @@ module ZipContainer
43
43
 
44
44
  # This exception is raised when a bad Container is detected.
45
45
  class MalformedContainerError < RuntimeError
46
+
46
47
  include Error
47
48
 
48
49
  # :call-seq:
@@ -54,7 +55,7 @@ module ZipContainer
54
55
  # reasons for why the Container is malformed.
55
56
  def initialize(reason = nil)
56
57
  if reason.nil? || reason.empty?
57
- super("Malformed Container.")
58
+ super('Malformed Container.')
58
59
  elsif reason.is_a?(Array)
59
60
  reasons = reason.map { |r| " * #{r}\n" }
60
61
  super("Malformed Container:\n#{reasons}")
@@ -67,6 +68,7 @@ module ZipContainer
67
68
  # This exception is raised when a clash occurs with a reserved or managed
68
69
  # name.
69
70
  class ReservedNameClashError < RuntimeError
71
+
70
72
  include Error
71
73
 
72
74
  # :call-seq:
@@ -49,7 +49,7 @@ module ZipContainer
49
49
 
50
50
  extend Forwardable
51
51
  def_delegators :@container, :comment, :comment=, :commit_required?, :each,
52
- :entries, :extract, :get_input_stream, :name, :read, :size
52
+ :entries, :extract, :get_input_stream, :name, :read, :size
53
53
 
54
54
  private_class_method :new
55
55
 
@@ -74,7 +74,7 @@ module ZipContainer
74
74
  # File.create(filename, mimetype) {|container| ...}
75
75
  #
76
76
  # Create a new ZipContainer file on disk with the specified mimetype.
77
- def self.create(filename, mimetype, &block)
77
+ def self.create(filename, mimetype)
78
78
  ::Zip::OutputStream.open(filename) do |stream|
79
79
  stream.put_next_entry(MIMETYPE_FILE, nil, nil, ::Zip::Entry::STORED)
80
80
  stream.write mimetype
@@ -127,7 +127,7 @@ module ZipContainer
127
127
  # +continue_on_exists_proc+ parameter.
128
128
  def add(entry, src_path, &continue_on_exists_proc)
129
129
  if reserved_entry?(entry) || managed_directory?(entry)
130
- raise ReservedNameClashError.new(entry.to_s)
130
+ raise ReservedNameClashError, entry.to_s
131
131
  end
132
132
 
133
133
  @container.add(entry, src_path, &continue_on_exists_proc)
@@ -143,12 +143,10 @@ module ZipContainer
143
143
  def commit
144
144
  return false unless commit_required?
145
145
 
146
- if on_disk?
147
- @container.commit
148
- end
146
+ @container.commit if on_disk?
149
147
  end
150
148
 
151
- alias :close :commit
149
+ alias close commit
152
150
 
153
151
  # :call-seq:
154
152
  # dir -> Zip::ZipFsDir
@@ -182,7 +180,7 @@ module ZipContainer
182
180
  # can specify <tt>:include_hidden => true</tt> to include hidden entries
183
181
  # in the search.
184
182
  def find_entry(entry_name, options = {})
185
- options = {:include_hidden => false}.merge(options)
183
+ options = { include_hidden: false }.merge(options)
186
184
 
187
185
  unless options[:include_hidden]
188
186
  return if hidden_entry?(entry_name)
@@ -199,7 +197,7 @@ module ZipContainer
199
197
  # can specify <tt>:include_hidden => true</tt> to include hidden entries
200
198
  # in the search.
201
199
  def get_entry(entry, options = {})
202
- options = {:include_hidden => false}.merge(options)
200
+ options = { include_hidden: false }.merge(options)
203
201
 
204
202
  unless options[:include_hidden]
205
203
  raise Errno::ENOENT, entry if hidden_entry?(entry)
@@ -220,7 +218,7 @@ module ZipContainer
220
218
  # parameter.
221
219
  def get_output_stream(entry, permission = nil, &block)
222
220
  if reserved_entry?(entry) || managed_directory?(entry)
223
- raise ReservedNameClashError.new(entry.to_s)
221
+ raise ReservedNameClashError, entry.to_s
224
222
  end
225
223
 
226
224
  @container.get_output_stream(entry, permission, &block)
@@ -240,9 +238,9 @@ module ZipContainer
240
238
  # <tt>::File::FNM_PATHNAME | ::File::FNM_DOTMATCH</tt>
241
239
  # * +options+ - <tt>:include_hidden => true</tt> will include hidden
242
240
  # entries in the search.
243
- def glob(pattern, *params, &block)
241
+ def glob(pattern, *params)
244
242
  flags = ::File::FNM_PATHNAME | ::File::FNM_DOTMATCH
245
- options = { :include_hidden => false }
243
+ options = { include_hidden: false }
246
244
 
247
245
  params.each do |param|
248
246
  case param
@@ -256,6 +254,7 @@ module ZipContainer
256
254
  entries.map do |entry|
257
255
  next if !options[:include_hidden] && hidden_entry?(entry)
258
256
  next unless ::File.fnmatch(pattern, entry.name.chomp('/'), flags)
257
+
259
258
  yield(entry) if block_given?
260
259
  entry
261
260
  end.compact
@@ -279,9 +278,9 @@ module ZipContainer
279
278
  # The new directory will be created with the supplied unix-style
280
279
  # permissions. The default (+0755+) is owner read, write and list; group
281
280
  # read and list; and world read and list.
282
- def mkdir(name, permission = 0755)
281
+ def mkdir(name, permission = 0o0755)
283
282
  if reserved_entry?(name) || managed_file?(name)
284
- raise ReservedNameClashError.new(name)
283
+ raise ReservedNameClashError, name
285
284
  end
286
285
 
287
286
  @container.mkdir(name, permission)
@@ -303,6 +302,7 @@ module ZipContainer
303
302
  # method will do nothing.
304
303
  def remove(entry)
305
304
  return if reserved_entry?(entry)
305
+
306
306
  @container.remove(entry)
307
307
  end
308
308
 
@@ -318,7 +318,7 @@ module ZipContainer
318
318
  # +continue_on_exists_proc+ parameter.
319
319
  def rename(entry, new_name, &continue_on_exists_proc)
320
320
  return if reserved_entry?(entry)
321
- raise ReservedNameClashError.new(new_name) if reserved_entry?(new_name)
321
+ raise ReservedNameClashError, new_name if reserved_entry?(new_name)
322
322
 
323
323
  @container.rename(entry, new_name, &continue_on_exists_proc)
324
324
  end
@@ -332,6 +332,7 @@ module ZipContainer
332
332
  # nothing.
333
333
  def replace(entry, src_path)
334
334
  return if reserved_entry?(entry)
335
+
335
336
  @container.replace(entry, src_path)
336
337
  end
337
338
 
@@ -479,6 +480,5 @@ module ZipContainer
479
480
  # size -> int
480
481
  #
481
482
  # Returns the number of entries in the ZipContainer file.
482
-
483
483
  end
484
484
  end
@@ -30,7 +30,7 @@
30
30
  #
31
31
  # Author: Robert Haines
32
32
 
33
- #
33
+ ##
34
34
  module ZipContainer
35
35
 
36
36
  # Utility methods useful throughout the rest of the ZipContainer library.
@@ -46,10 +46,10 @@ module ZipContainer
46
46
  # In common with rubyzip this method also removes a trailing slash (/)
47
47
  # from a name if it can.
48
48
  def entry_name(entry)
49
- name = entry.kind_of?(::Zip::Entry) ? entry.name : entry
49
+ name = entry.is_a?(::Zip::Entry) ? entry.name : entry
50
50
 
51
51
  if name.respond_to?(:end_with?) && name.respond_to?(:chop!)
52
- name.chop! if name.end_with?("/")
52
+ name.chop! if name.end_with?('/')
53
53
  end
54
54
 
55
55
  name
@@ -37,10 +37,11 @@ module ZipContainer
37
37
  # Library version information.
38
38
  module Version
39
39
  # Version information in a Hash
40
- INFO = YAML.load_file(File.join(File.dirname(__FILE__), "..", "..",
41
- "version.yml"))
40
+ INFO = YAML.load_file(
41
+ File.join(File.dirname(__FILE__), '..', '..', 'version.yml')
42
+ )
42
43
 
43
44
  # Version number as a String
44
- STRING = [:major, :minor, :patch].map {|d| INFO[d]}.compact.join('.')
45
+ STRING = %i[major minor patch].map { |d| INFO[d] }.compact.join('.')
45
46
  end
46
47
  end
@@ -1,4 +1,4 @@
1
1
  ---
2
- :major: 3
2
+ :major: 4
3
3
  :minor: 0
4
- :patch: 2
4
+ :patch: 1
@@ -30,35 +30,38 @@
30
30
  #
31
31
  # Author: Robert Haines
32
32
 
33
- lib = File.expand_path('../lib', __FILE__)
33
+ lib = File.expand_path('lib', __dir__)
34
34
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
35
- require "zip-container/version"
35
+ require 'zip-container/version'
36
36
 
37
37
  Gem::Specification.new do |s|
38
- s.name = "zip-container"
38
+ s.name = 'zip-container'
39
39
  s.version = ZipContainer::Version::STRING
40
- s.authors = ["Robert Haines", "Finn Bacall"]
41
- s.email = ["support@mygrid.org.uk"]
42
- s.homepage = "http://mygrid.github.io/ruby-zip-container/"
43
- s.platform = Gem::Platform::RUBY
44
- s.summary = "A ZIP Container for use by OCF and UCF implementations"
45
- s.description = "A Ruby library for working with ZIP Container "\
46
- "Format files. See http://www.idpf.org/epub/30/spec/epub30-ocf.html for "\
47
- "the OCF specification and "\
48
- "https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format "\
49
- "for the UCF specification."
50
- s.license = "BSD"
51
- s.require_path = "lib"
52
- s.files = `git ls-files`.split($/)
53
- s.test_files = `git ls-files -- test/*`.split($/)
54
- s.has_rdoc = true
55
- s.extra_rdoc_files = [ "Changes.rdoc", "Licence.rdoc", "ReadMe.rdoc" ]
56
- s.rdoc_options = [ "-N", "--tab-width=2", "--main=ReadMe.rdoc" ]
57
- s.required_ruby_version = ">= 1.9.3"
58
- s.add_development_dependency "bundler", "~> 1.5"
59
- s.add_development_dependency "rake", "~> 10.1"
60
- s.add_development_dependency "rdoc", "~> 4.1"
61
- s.add_development_dependency "test-unit", "~> 3.0"
62
- s.add_development_dependency "coveralls"
63
- s.add_runtime_dependency "rubyzip", "~> 1.2.1"
40
+ s.authors = ['Robert Haines', 'Finn Bacall']
41
+ s.email = ['support@mygrid.org.uk']
42
+
43
+ s.homepage = 'http://mygrid.github.io/ruby-zip-container/'
44
+ s.summary = 'A ZIP Container for use by OCF and UCF implementations'
45
+ s.description = 'A Ruby library for working with ZIP Container '\
46
+ 'Format files. See http://www.idpf.org/epub/30/spec/epub30-ocf.html for '\
47
+ 'the OCF specification and '\
48
+ 'https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format '\
49
+ 'for the UCF specification.'
50
+ s.license = 'BSD'
51
+
52
+ s.require_path = 'lib'
53
+ s.files = `git ls-files -z`.split("\x0").reject do |f|
54
+ f.match(%r{^((test|spec|features)/|\.)})
55
+ end
56
+
57
+ s.required_ruby_version = '>= 2.2.0'
58
+
59
+ s.add_runtime_dependency 'rubyzip', '~> 1.3.0'
60
+
61
+ s.add_development_dependency 'bundler', '~> 1.16'
62
+ s.add_development_dependency 'coveralls', '~> 0.8'
63
+ s.add_development_dependency 'rake', '~> 10.1'
64
+ s.add_development_dependency 'rdoc', '~> 4.1'
65
+ s.add_development_dependency 'rubocop', '~> 0.59'
66
+ s.add_development_dependency 'test-unit', '~> 3.0'
64
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zip-container
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Haines
@@ -9,92 +9,106 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-01-19 00:00:00.000000000 Z
12
+ date: 2019-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rubyzip
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 1.3.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 1.3.0
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: bundler
16
30
  requirement: !ruby/object:Gem::Requirement
17
31
  requirements:
18
32
  - - "~>"
19
33
  - !ruby/object:Gem::Version
20
- version: '1.5'
34
+ version: '1.16'
21
35
  type: :development
22
36
  prerelease: false
23
37
  version_requirements: !ruby/object:Gem::Requirement
24
38
  requirements:
25
39
  - - "~>"
26
40
  - !ruby/object:Gem::Version
27
- version: '1.5'
41
+ version: '1.16'
28
42
  - !ruby/object:Gem::Dependency
29
- name: rake
43
+ name: coveralls
30
44
  requirement: !ruby/object:Gem::Requirement
31
45
  requirements:
32
46
  - - "~>"
33
47
  - !ruby/object:Gem::Version
34
- version: '10.1'
48
+ version: '0.8'
35
49
  type: :development
36
50
  prerelease: false
37
51
  version_requirements: !ruby/object:Gem::Requirement
38
52
  requirements:
39
53
  - - "~>"
40
54
  - !ruby/object:Gem::Version
41
- version: '10.1'
55
+ version: '0.8'
42
56
  - !ruby/object:Gem::Dependency
43
- name: rdoc
57
+ name: rake
44
58
  requirement: !ruby/object:Gem::Requirement
45
59
  requirements:
46
60
  - - "~>"
47
61
  - !ruby/object:Gem::Version
48
- version: '4.1'
62
+ version: '10.1'
49
63
  type: :development
50
64
  prerelease: false
51
65
  version_requirements: !ruby/object:Gem::Requirement
52
66
  requirements:
53
67
  - - "~>"
54
68
  - !ruby/object:Gem::Version
55
- version: '4.1'
69
+ version: '10.1'
56
70
  - !ruby/object:Gem::Dependency
57
- name: test-unit
71
+ name: rdoc
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
74
  - - "~>"
61
75
  - !ruby/object:Gem::Version
62
- version: '3.0'
76
+ version: '4.1'
63
77
  type: :development
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
81
  - - "~>"
68
82
  - !ruby/object:Gem::Version
69
- version: '3.0'
83
+ version: '4.1'
70
84
  - !ruby/object:Gem::Dependency
71
- name: coveralls
85
+ name: rubocop
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
- - - ">="
88
+ - - "~>"
75
89
  - !ruby/object:Gem::Version
76
- version: '0'
90
+ version: '0.59'
77
91
  type: :development
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
- - - ">="
95
+ - - "~>"
82
96
  - !ruby/object:Gem::Version
83
- version: '0'
97
+ version: '0.59'
84
98
  - !ruby/object:Gem::Dependency
85
- name: rubyzip
99
+ name: test-unit
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - "~>"
89
103
  - !ruby/object:Gem::Version
90
- version: 1.2.1
91
- type: :runtime
104
+ version: '3.0'
105
+ type: :development
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - "~>"
96
110
  - !ruby/object:Gem::Version
97
- version: 1.2.1
111
+ version: '3.0'
98
112
  description: A Ruby library for working with ZIP Container Format files. See http://www.idpf.org/epub/30/spec/epub30-ocf.html
99
113
  for the OCF specification and https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format
100
114
  for the UCF specification.
@@ -102,16 +116,8 @@ email:
102
116
  - support@mygrid.org.uk
103
117
  executables: []
104
118
  extensions: []
105
- extra_rdoc_files:
106
- - Changes.rdoc
107
- - Licence.rdoc
108
- - ReadMe.rdoc
119
+ extra_rdoc_files: []
109
120
  files:
110
- - ".gitignore"
111
- - ".ruby-env"
112
- - ".ruby-gemset"
113
- - ".ruby-version"
114
- - ".travis.yml"
115
121
  - Changes.rdoc
116
122
  - Gemfile
117
123
  - Licence.rdoc
@@ -132,28 +138,6 @@ files:
132
138
  - lib/zip-container/file.rb
133
139
  - lib/zip-container/util.rb
134
140
  - lib/zip-container/version.rb
135
- - test/data/compressed_mimetype.container
136
- - test/data/dirs/dir-mimetype/mimetype/.gitkeep
137
- - test/data/dirs/empty/mimetype
138
- - test/data/dirs/managed/dir/.gitkeep
139
- - test/data/dirs/managed/greeting.txt
140
- - test/data/dirs/managed/mimetype
141
- - test/data/dirs/null/.gitkeep
142
- - test/data/empty.container
143
- - test/data/empty.zip
144
- - test/data/example.container
145
- - test/data/null.file
146
- - test/data/subclassed.container
147
- - test/helpers/entry_lists.rb
148
- - test/tc_create_dir.rb
149
- - test/tc_create_file.rb
150
- - test/tc_exceptions.rb
151
- - test/tc_managed_entries.rb
152
- - test/tc_read_dir.rb
153
- - test/tc_read_file.rb
154
- - test/tc_reserved_names.rb
155
- - test/tc_util.rb
156
- - test/ts_container.rb
157
141
  - version.yml
158
142
  - zip-container.gemspec
159
143
  homepage: http://mygrid.github.io/ruby-zip-container/
@@ -161,48 +145,22 @@ licenses:
161
145
  - BSD
162
146
  metadata: {}
163
147
  post_install_message:
164
- rdoc_options:
165
- - "-N"
166
- - "--tab-width=2"
167
- - "--main=ReadMe.rdoc"
148
+ rdoc_options: []
168
149
  require_paths:
169
150
  - lib
170
151
  required_ruby_version: !ruby/object:Gem::Requirement
171
152
  requirements:
172
153
  - - ">="
173
154
  - !ruby/object:Gem::Version
174
- version: 1.9.3
155
+ version: 2.2.0
175
156
  required_rubygems_version: !ruby/object:Gem::Requirement
176
157
  requirements:
177
158
  - - ">="
178
159
  - !ruby/object:Gem::Version
179
160
  version: '0'
180
161
  requirements: []
181
- rubyforge_project:
182
- rubygems_version: 2.4.8
162
+ rubygems_version: 3.0.6
183
163
  signing_key:
184
164
  specification_version: 4
185
165
  summary: A ZIP Container for use by OCF and UCF implementations
186
- test_files:
187
- - test/data/compressed_mimetype.container
188
- - test/data/dirs/dir-mimetype/mimetype/.gitkeep
189
- - test/data/dirs/empty/mimetype
190
- - test/data/dirs/managed/dir/.gitkeep
191
- - test/data/dirs/managed/greeting.txt
192
- - test/data/dirs/managed/mimetype
193
- - test/data/dirs/null/.gitkeep
194
- - test/data/empty.container
195
- - test/data/empty.zip
196
- - test/data/example.container
197
- - test/data/null.file
198
- - test/data/subclassed.container
199
- - test/helpers/entry_lists.rb
200
- - test/tc_create_dir.rb
201
- - test/tc_create_file.rb
202
- - test/tc_exceptions.rb
203
- - test/tc_managed_entries.rb
204
- - test/tc_read_dir.rb
205
- - test/tc_read_file.rb
206
- - test/tc_reserved_names.rb
207
- - test/tc_util.rb
208
- - test/ts_container.rb
166
+ test_files: []