zip-container 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Changes.rdoc CHANGED
@@ -1,5 +1,9 @@
1
1
  = Changes log for the ZIP Container Ruby Gem
2
2
 
3
+ == Version 1.0.0
4
+
5
+ * Update to use version 1.0.0 of rubyzip.
6
+
3
7
  == Version 0.9.0
4
8
 
5
9
  * Generalize the Container Error class names.
data/Rakefile CHANGED
@@ -65,7 +65,7 @@ Jeweler::Tasks.new do |s|
65
65
  s.add_development_dependency('rake', '~> 10.0.4')
66
66
  s.add_development_dependency('rdoc', '~> 4.0.1')
67
67
  s.add_development_dependency('jeweler', '~> 1.8.4')
68
- s.add_runtime_dependency('rubyzip', '~> 0.9.9')
68
+ s.add_runtime_dependency('rubyzip', '~> 1.0.0')
69
69
  end
70
70
 
71
71
  Rake::TestTask.new do |t|
data/ReadMe.rdoc CHANGED
@@ -7,6 +7,7 @@ Source code:: https://github.com/myGrid/ruby-zip-container
7
7
  Licence:: BSD (See Licence file or http://www.opensource.org/licenses/bsd-license.php)
8
8
  Copyright:: (c) 2013 The University of Manchester, UK
9
9
 
10
+ {<img src="https://badge.fury.io/rb/zip-container.png" alt="Gem Version" />}[http://badge.fury.io/rb/zip-container]
10
11
  {<img src="https://codeclimate.com/github/myGrid/ruby-zip-container.png" />}[https://codeclimate.com/github/myGrid/ruby-zip-container]
11
12
 
12
13
  == Synopsis
@@ -16,11 +17,20 @@ This is a Ruby library for working with ZIP Container files. See the
16
17
  {UDF}[https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format]
17
18
  specifications for more details.
18
19
 
19
- <b>This library is a work in progress!</b> Until we release version 1.0.0 you
20
- can expect the API to change in incompatible ways, although we will try to
21
- keep this to an absolute minimum. Once version 1.0.0 is released we will be
22
- following the principles of {Semantic Versioning}[http://semver.org/] for our
23
- version numbering scheme.
20
+ == Backwards incompatibility warning!
21
+
22
+ Version 1.0.0 and up of this gem uses version 1.0.0 and up of the
23
+ {rubyzip}[https://rubygems.org/gems/rubyzip] library. This has a backwards
24
+ incompatible API that may clash with other gems that you are using. Please see
25
+ the {important note}[https://github.com/rubyzip/rubyzip/blob/master/README.md#important-note]
26
+ in the rubyzip readme for a workaround.
27
+
28
+ == Usage
29
+
30
+ This library largely mimics the rubyzip Zip::File API so much of what you can
31
+ do with that is supported for ZIP Containers. There is also
32
+ {API documentation}[http://mygrid.github.io/ruby-zip-container/] with much more
33
+ detail and any differences explained.
24
34
 
25
35
  There are some examples of how to use the library provided in the examples
26
36
  directory. See the contents of the tests directory for even more.
@@ -29,6 +39,4 @@ directory. See the contents of the tests directory for even more.
29
39
 
30
40
  The basic requirements of a ZIP Container are all implemented but memory
31
41
  resident ZIP Container files are not yet supported. Presently all operations
32
- are performed on files that are resident on disk as the underlying
33
- {rubyzip library}[https://github.com/aussiegeek/rubyzip] currently
34
- {cannot do anything else}[https://github.com/aussiegeek/rubyzip/issues/74].
42
+ are performed on files that are resident on disk.
@@ -31,7 +31,6 @@
31
31
  # Author: Robert Haines
32
32
 
33
33
  require 'forwardable'
34
- require 'zip/zipfilesystem'
35
34
 
36
35
  module ZipContainer
37
36
 
@@ -40,9 +39,9 @@ module ZipContainer
40
39
  # {UCF}[https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format]
41
40
  # specifications for more details.
42
41
  #
43
- # This class provides most of the facilities of the <tt>Zip::ZipFile</tt>
42
+ # This class provides most of the facilities of the <tt>Zip::File</tt>
44
43
  # class in the rubyzip gem. Please also consult the
45
- # {rubyzip documentation}[http://rubydoc.info/gems/rubyzip/0.9.9/frames]
44
+ # {rubyzip documentation}[http://rubydoc.info/gems/rubyzip/1.1.0/frames]
46
45
  # alongside these pages.
47
46
  #
48
47
  # There are code examples available with the source code of this library.
@@ -79,9 +78,9 @@ module ZipContainer
79
78
 
80
79
  # Here we fake up the connection to the rubyzip filesystem classes so
81
80
  # that they also respect the reserved names that we define.
82
- mapped_zip = ::Zip::ZipFileSystem::ZipFileNameMapper.new(self)
83
- @fs_dir = ::Zip::ZipFileSystem::ZipFsDir.new(mapped_zip)
84
- @fs_file = ::Zip::ZipFileSystem::ZipFsFile.new(mapped_zip)
81
+ mapped_zip = ::Zip::FileSystem::ZipFileNameMapper.new(self)
82
+ @fs_dir = ::Zip::FileSystem::ZipFsDir.new(mapped_zip)
83
+ @fs_file = ::Zip::FileSystem::ZipFsFile.new(mapped_zip)
85
84
  @fs_dir.file = @fs_file
86
85
  @fs_file.dir = @fs_dir
87
86
  end
@@ -93,8 +92,8 @@ module ZipContainer
93
92
  #
94
93
  # Create a new ZipContainer file on disk with the specified mimetype.
95
94
  def Container.create(filename, mimetype, &block)
96
- ::Zip::ZipOutputStream.open(filename) do |stream|
97
- stream.put_next_entry(MIMETYPE_FILE, nil, nil, ::Zip::ZipEntry::STORED)
95
+ ::Zip::OutputStream.open(filename) do |stream|
96
+ stream.put_next_entry(MIMETYPE_FILE, nil, nil, ::Zip::Entry::STORED)
98
97
  stream.write mimetype
99
98
  end
100
99
 
@@ -117,7 +116,7 @@ module ZipContainer
117
116
  # Container.each_entry {|entry| ...}
118
117
  #
119
118
  # Iterate over the entries in the ZipContainer file. The entry objects
120
- # returned by this method are Zip::ZipEntry objects. Please see the
119
+ # returned by this method are Zip::Entry objects. Please see the
121
120
  # rubyzip documentation for details.
122
121
  def Container.each_entry(filename, &block)
123
122
  c = new(filename)
@@ -351,7 +350,7 @@ module ZipContainer
351
350
  private
352
351
 
353
352
  def open_document(document)
354
- ::Zip::ZipFile.new(document)
353
+ ::Zip::File.new(document)
355
354
  end
356
355
 
357
356
  def check_mimetype!
@@ -359,10 +358,10 @@ module ZipContainer
359
358
  entry = @zipfile.find_entry(MIMETYPE_FILE)
360
359
 
361
360
  raise MalformedContainerError.new("'mimetype' file is missing.") if entry.nil?
362
- if entry.localHeaderOffset != 0
361
+ if entry.local_header_offset != 0
363
362
  raise MalformedContainerError.new("'mimetype' file is not at offset 0 in the archive.")
364
363
  end
365
- if entry.compression_method != ::Zip::ZipEntry::STORED
364
+ if entry.compression_method != ::Zip::Entry::STORED
366
365
  raise MalformedContainerError.new("'mimetype' file is compressed.")
367
366
  end
368
367
 
@@ -406,16 +405,16 @@ module ZipContainer
406
405
  # each {|entry| ...}
407
406
  #
408
407
  # Iterate over the entries in the ZipContainer file. The entry objects
409
- # returned by this method are Zip::ZipEntry objects. Please see the
408
+ # returned by this method are Zip::Entry objects. Please see the
410
409
  # rubyzip documentation for details.
411
410
 
412
411
  ##
413
- # :method:
412
+ # :method: entries
414
413
  # :call-seq:
415
414
  # entries -> Enumerable
416
415
  #
417
416
  # Returns an Enumerable containing all the entries in the ZipContainer
418
- # file The entry objects returned by this method are Zip::ZipEntry
417
+ # file The entry objects returned by this method are Zip::Entry
419
418
  # objects. Please see the rubyzip documentation for details.
420
419
 
421
420
  ##
@@ -431,7 +430,7 @@ module ZipContainer
431
430
  ##
432
431
  # :method: find_entry
433
432
  # :call-seq:
434
- # find_entry(entry) -> Zip::ZipEntry
433
+ # find_entry(entry) -> Zip::Entry
435
434
  #
436
435
  # Searches for entries within the ZipContainer file with the specified
437
436
  # name. Returns +nil+ if no entry is found. See also +get_entry+.
@@ -439,7 +438,7 @@ module ZipContainer
439
438
  ##
440
439
  # :method: get_entry
441
440
  # :call-seq:
442
- # get_entry(entry) -> Zip::ZipEntry
441
+ # get_entry(entry) -> Zip::Entry
443
442
  #
444
443
  # Searches for an entry within the ZipContainer file in a similar manner
445
444
  # to +find_entry+, but throws +Errno::ENOENT+ if no entry is found.
@@ -457,7 +456,7 @@ module ZipContainer
457
456
  ##
458
457
  # :method: glob
459
458
  # :call-seq:
460
- # glob(*args) -> Array of Zip::ZipEntry
459
+ # glob(*args) -> Array of Zip::Entry
461
460
  # glob(*args) {|entry| ...}
462
461
  #
463
462
  # Searches for entries within the ZipContainer file that match the given
@@ -30,8 +30,7 @@
30
30
  #
31
31
  # Author: Robert Haines
32
32
 
33
- require 'zip/zip_entry'
34
-
33
+ #
35
34
  module ZipContainer
36
35
 
37
36
  # This module provides support for managed file and directory entries.
@@ -86,7 +85,7 @@ module ZipContainer
86
85
  #
87
86
  # Is the supplied entry/name a managed entry?
88
87
  def managed_entry?(entry, list = managed_entry_names)
89
- name = entry.kind_of?(::Zip::ZipEntry) ? entry.name : entry
88
+ name = entry.kind_of?(::Zip::Entry) ? entry.name : entry
90
89
  name.chop! if name.end_with? "/"
91
90
  list.map { |n| n.downcase }.include? name.downcase
92
91
  end
@@ -30,8 +30,7 @@
30
30
  #
31
31
  # Author: Robert Haines
32
32
 
33
- require 'zip/zip_entry'
34
-
33
+ #
35
34
  module ZipContainer
36
35
 
37
36
  # This module provides support for reserved names.
@@ -67,9 +66,9 @@ module ZipContainer
67
66
  # reserved_entry?(entry) -> boolean
68
67
  #
69
68
  # Is the given entry in the reserved list of names? A String or a
70
- # Zip::ZipEntry object can be passed in here.
69
+ # Zip::Entry object can be passed in here.
71
70
  def reserved_entry?(entry)
72
- name = entry.kind_of?(::Zip::ZipEntry) ? entry.name : entry
71
+ name = entry.kind_of?(::Zip::Entry) ? entry.name : entry
73
72
  name.chop! if name.end_with? "/"
74
73
  reserved_names.map { |n| n.downcase }.include? name.downcase
75
74
  end
data/lib/zip-container.rb CHANGED
@@ -31,6 +31,8 @@
31
31
  # Author: Robert Haines
32
32
 
33
33
  require 'yaml'
34
+ require 'zip/filesystem'
35
+
34
36
  require 'zip-container/exceptions'
35
37
  require 'zip-container/entries/reserved'
36
38
  require 'zip-container/entries/managed'
data/test/tc_create.rb CHANGED
@@ -46,7 +46,7 @@ class TestCreation < Test::Unit::TestCase
46
46
  assert(c.on_disk?)
47
47
  refute(c.in_memory?)
48
48
 
49
- assert(c.find_entry("mimetype").localHeaderOffset == 0)
49
+ assert(c.find_entry("mimetype").local_header_offset == 0)
50
50
  end
51
51
  end
52
52
 
@@ -68,7 +68,7 @@ class TestCreation < Test::Unit::TestCase
68
68
  assert(c.on_disk?)
69
69
  refute(c.in_memory?)
70
70
 
71
- assert(c.find_entry("mimetype").localHeaderOffset == 0)
71
+ assert(c.find_entry("mimetype").local_header_offset == 0)
72
72
  end
73
73
  end
74
74
 
data/version.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :major: 0
3
- :minor: 9
2
+ :major: 1
3
+ :minor: 0
4
4
  :patch: 0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "zip-container"
8
- s.version = "0.9.0"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Robert Haines"]
12
- s.date = "2013-06-27"
12
+ s.date = "2013-12-19"
13
13
  s.description = "A Ruby library for working with ZIP Container Format files. See http://www.idpf.org/epub/30/spec/epub30-ocf.html for the OCF specification and https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format for the UCF specification."
14
14
  s.email = ["support@mygrid.org.uk"]
15
15
  s.extra_rdoc_files = [
@@ -60,18 +60,18 @@ Gem::Specification.new do |s|
60
60
  s.add_development_dependency(%q<rake>, ["~> 10.0.4"])
61
61
  s.add_development_dependency(%q<rdoc>, ["~> 4.0.1"])
62
62
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
63
- s.add_runtime_dependency(%q<rubyzip>, ["~> 0.9.9"])
63
+ s.add_runtime_dependency(%q<rubyzip>, ["~> 1.0.0"])
64
64
  else
65
65
  s.add_dependency(%q<rake>, ["~> 10.0.4"])
66
66
  s.add_dependency(%q<rdoc>, ["~> 4.0.1"])
67
67
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
68
- s.add_dependency(%q<rubyzip>, ["~> 0.9.9"])
68
+ s.add_dependency(%q<rubyzip>, ["~> 1.0.0"])
69
69
  end
70
70
  else
71
71
  s.add_dependency(%q<rake>, ["~> 10.0.4"])
72
72
  s.add_dependency(%q<rdoc>, ["~> 4.0.1"])
73
73
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
74
- s.add_dependency(%q<rubyzip>, ["~> 0.9.9"])
74
+ s.add_dependency(%q<rubyzip>, ["~> 1.0.0"])
75
75
  end
76
76
  end
77
77
 
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: 0.9.0
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-27 00:00:00.000000000 Z
12
+ date: 2013-12-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 0.9.9
69
+ version: 1.0.0
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 0.9.9
77
+ version: 1.0.0
78
78
  description: A Ruby library for working with ZIP Container Format files. See http://www.idpf.org/epub/30/spec/epub30-ocf.html
79
79
  for the OCF specification and https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format
80
80
  for the UCF specification.