zip-container 0.8.0 → 0.9.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,10 @@
1
1
  = Changes log for the ZIP Container Ruby Gem
2
2
 
3
+ == Version 0.9.0
4
+
5
+ * Generalize the Container Error class names.
6
+ * Polish example scripts.
7
+
3
8
  == Version 0.8.0
4
9
 
5
10
  * Abstract out all the underlying zip functionality and turn this library
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  # Copyright (c) 2013 The University of Manchester, UK.
2
3
  #
3
4
  # All rights reserved.
@@ -33,13 +34,22 @@
33
34
  require 'rubygems'
34
35
  require 'zip-container'
35
36
 
36
- ZIP_FILE = "example.zip"
37
- file = ARGV.length > 0 ? ARGV[0] : ZIP_FILE
37
+ def usage
38
+ puts "Usage:\n create-zip-container <zip-container-file>"
39
+ exit 1
40
+ end
41
+
42
+ usage unless ARGV.length == 1
38
43
 
39
- File.delete(file) if File.exists?(file)
44
+ container_file = ARGV[0]
45
+
46
+ if File.exists?(container_file)
47
+ puts "File '#{container_file}' already exists. Exiting."
48
+ exit 1
49
+ end
40
50
 
41
51
  begin
42
- ZipContainer::Container.create(file, "application/epub+zip") do |c|
52
+ ZipContainer::Container.create(container_file, "application/epub+zip") do |c|
43
53
 
44
54
  # Add a cheery greeting file from a string.
45
55
  c.file.open("greeting.txt", "w") do |f|
@@ -55,7 +65,7 @@ begin
55
65
  # Add a explanation of this file.
56
66
  c.comment = "This is an example Container file!"
57
67
  end
58
- rescue ZipContainer::MalformedZipContainerError, Zip::ZipError => err
68
+ rescue ZipContainer::MalformedContainerError, Zip::ZipError => err
59
69
  puts err.to_s
60
70
  exit 1
61
71
  end
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  # Copyright (c) 2013 The University of Manchester, UK.
2
3
  #
3
4
  # All rights reserved.
@@ -33,12 +34,18 @@
33
34
  require 'rubygems'
34
35
  require 'zip-container'
35
36
 
36
- ZIP_FILE = "example.zip"
37
- file = ARGV.length > 0 ? ARGV[0] : ZIP_FILE
37
+ def usage
38
+ puts "Usage:\n verify-zip-container <zip-container-file>"
39
+ exit 1
40
+ end
41
+
42
+ usage unless ARGV.length == 1
43
+
44
+ container_file = ARGV[0]
38
45
 
39
46
  begin
40
- ZipContainer::Container.verify!(file)
41
- rescue ZipContainer::MalformedZipContainerError, Zip::ZipError => err
47
+ ZipContainer::Container.verify!(container_file)
48
+ rescue ZipContainer::MalformedContainerError, Zip::ZipError => err
42
49
  puts err.to_s
43
50
  exit 1
44
51
  end
@@ -35,7 +35,7 @@ require 'rubygems'
35
35
  require 'zip-container'
36
36
 
37
37
  def usage
38
- puts "zip-container-info zip-container-file"
38
+ puts "Usage:\n zip-container-info <zip-container-file>"
39
39
  exit 1
40
40
  end
41
41
 
@@ -45,7 +45,7 @@ container_file = ARGV[0]
45
45
 
46
46
  begin
47
47
  container = ZipContainer::Container.open(container_file)
48
- rescue ZipContainer::MalformedZipContainerError, Zip::ZipError => err
48
+ rescue ZipContainer::MalformedContainerError, Zip::ZipError => err
49
49
  puts err.to_s
50
50
  exit 1
51
51
  end
@@ -358,12 +358,12 @@ module ZipContainer
358
358
  # Check mimetype file is present and correct.
359
359
  entry = @zipfile.find_entry(MIMETYPE_FILE)
360
360
 
361
- raise MalformedZipContainerError.new("'mimetype' file is missing.") if entry.nil?
361
+ raise MalformedContainerError.new("'mimetype' file is missing.") if entry.nil?
362
362
  if entry.localHeaderOffset != 0
363
- raise MalformedZipContainerError.new("'mimetype' file is not at offset 0 in the archive.")
363
+ raise MalformedContainerError.new("'mimetype' file is not at offset 0 in the archive.")
364
364
  end
365
365
  if entry.compression_method != ::Zip::ZipEntry::STORED
366
- raise MalformedZipContainerError.new("'mimetype' file is compressed.")
366
+ raise MalformedContainerError.new("'mimetype' file is compressed.")
367
367
  end
368
368
 
369
369
  true
@@ -61,7 +61,7 @@ module ZipContainer
61
61
  # Verify this ManagedDirectory for correctness. ManagedFiles registered
62
62
  # within it are verified recursively.
63
63
  #
64
- # A MalformedZipContainerError is raised if it does not pass verification.
64
+ # A MalformedContainerError is raised if it does not pass verification.
65
65
  def verify!
66
66
  super
67
67
  @files.values.each { |f| f.verify! }
@@ -111,15 +111,15 @@ module ZipContainer
111
111
  # :call-seq:
112
112
  # verify!
113
113
  #
114
- # Verify this ManagedEntry raising a MalformedZipContainerError if it
114
+ # Verify this ManagedEntry raising a MalformedContainerError if it
115
115
  # fails.
116
116
  #
117
117
  # Subclasses should override this method if they require more complex
118
118
  # verification to be done.
119
119
  def verify!
120
120
  unless !@required || exists?
121
- raise MalformedZipContainerError.new("Entry '#{full_name}' is required but "\
122
- "missing.")
121
+ raise MalformedContainerError.new("Entry '#{full_name}' is required "\
122
+ "but missing.")
123
123
  end
124
124
  end
125
125
 
@@ -67,11 +67,11 @@ module ZipContainer
67
67
  # Verify this ManagedFile for correctness. The contents are validated if
68
68
  # required.
69
69
  #
70
- # A MalformedZipContainerError is raised if it does not pass verification.
70
+ # A MalformedContainerError is raised if it does not pass verification.
71
71
  def verify!
72
72
  super
73
73
  unless (exists? ? validate : true)
74
- raise MalformedZipContainerError.new("The contents of file "\
74
+ raise MalformedContainerError.new("The contents of file "\
75
75
  "'#{full_name}' do not pass validation.")
76
76
  end
77
77
  end
@@ -34,29 +34,29 @@
34
34
  module ZipContainer
35
35
 
36
36
  # The base class of all other exceptions raised by this library.
37
- class ZipContainerError < RuntimeError
37
+ class ContainerError < RuntimeError
38
38
  end
39
39
 
40
- # This exception is raised when a bad ZipContainer is detected.
41
- class MalformedZipContainerError < ZipContainerError
40
+ # This exception is raised when a bad Container is detected.
41
+ class MalformedContainerError < ContainerError
42
42
 
43
43
  # :call-seq:
44
44
  # new(reason = "")
45
45
  #
46
- # Create a new MalformedZipContainerError with an optional reason for why
47
- # the ZipContainer file is malformed.
46
+ # Create a new MalformedContainerError with an optional reason for why
47
+ # the Container file is malformed.
48
48
  def initialize(reason = nil)
49
49
  if reason.nil?
50
- super("Malformed ZipContainer File.")
50
+ super("Malformed Container File.")
51
51
  else
52
- super("Malformed ZipContainer File: #{reason}")
52
+ super("Malformed Container File: #{reason}")
53
53
  end
54
54
  end
55
55
  end
56
56
 
57
57
  # This exception is raised when a clash occurs with a reserved or managed
58
58
  # name.
59
- class ReservedNameClashError < ZipContainerError
59
+ class ReservedNameClashError < ContainerError
60
60
 
61
61
  # :call-seq:
62
62
  # new(name)
data/test/tc_create.rb CHANGED
@@ -50,7 +50,7 @@ class TestCreation < Test::Unit::TestCase
50
50
  end
51
51
  end
52
52
 
53
- assert_nothing_raised(ZipContainer::MalformedZipContainerError, Zip::ZipError) do
53
+ assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
54
54
  ZipContainer::Container.verify!(filename)
55
55
  end
56
56
  end
@@ -72,7 +72,7 @@ class TestCreation < Test::Unit::TestCase
72
72
  end
73
73
  end
74
74
 
75
- assert_nothing_raised(ZipContainer::MalformedZipContainerError, Zip::ZipError) do
75
+ assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
76
76
  ZipContainer::Container.verify!(filename)
77
77
  end
78
78
  end
@@ -115,7 +115,7 @@ class TestCreation < Test::Unit::TestCase
115
115
  end
116
116
  end
117
117
 
118
- assert_nothing_raised(ZipContainer::MalformedZipContainerError, Zip::ZipError) do
118
+ assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
119
119
  ZipContainer::Container.open(filename) do |c|
120
120
  assert(c.on_disk?)
121
121
  refute(c.in_memory?)
@@ -86,7 +86,7 @@ class TestManagedEntries < Test::Unit::TestCase
86
86
  def test_fail_verification
87
87
  refute(ManagedZipContainer.verify($example))
88
88
 
89
- assert_raises(ZipContainer::MalformedZipContainerError) do
89
+ assert_raises(ZipContainer::MalformedContainerError) do
90
90
  ManagedZipContainer.verify!($example)
91
91
  end
92
92
  end
@@ -96,7 +96,7 @@ class TestManagedEntries < Test::Unit::TestCase
96
96
  def test_pass_verification
97
97
  assert(ExampleZipContainer.verify($example))
98
98
 
99
- assert_nothing_raised(ZipContainer::MalformedZipContainerError) do
99
+ assert_nothing_raised(ZipContainer::MalformedContainerError) do
100
100
  ExampleZipContainer.verify!($example)
101
101
  end
102
102
  end
@@ -106,7 +106,7 @@ class TestManagedEntries < Test::Unit::TestCase
106
106
  def test_pass_verification_2
107
107
  assert(ExampleZipContainer2.verify($example))
108
108
 
109
- assert_nothing_raised(ZipContainer::MalformedZipContainerError) do
109
+ assert_nothing_raised(ZipContainer::MalformedContainerError) do
110
110
  ExampleZipContainer2.verify!($example)
111
111
  end
112
112
  end
@@ -128,7 +128,7 @@ class TestManagedEntries < Test::Unit::TestCase
128
128
  end
129
129
  end
130
130
 
131
- assert_nothing_raised(ZipContainer::MalformedZipContainerError) do
131
+ assert_nothing_raised(ZipContainer::MalformedContainerError) do
132
132
  ZipContainer::Container.verify!(filename)
133
133
  end
134
134
  end
@@ -142,14 +142,14 @@ class TestManagedEntries < Test::Unit::TestCase
142
142
 
143
143
  assert_nothing_raised do
144
144
  ManagedZipContainer.create(filename, $mimetype) do |c|
145
- assert_raises(ZipContainer::MalformedZipContainerError) do
145
+ assert_raises(ZipContainer::MalformedContainerError) do
146
146
  c.verify!
147
147
  end
148
148
  end
149
149
  end
150
150
 
151
151
  refute(ManagedZipContainer.verify(filename))
152
- assert_raises(ZipContainer::MalformedZipContainerError) do
152
+ assert_raises(ZipContainer::MalformedContainerError) do
153
153
  ManagedZipContainer.verify!(filename)
154
154
  end
155
155
  end
@@ -171,7 +171,7 @@ class TestManagedEntries < Test::Unit::TestCase
171
171
  end
172
172
 
173
173
  assert(ManagedZipContainer.verify(filename))
174
- assert_nothing_raised(ZipContainer::MalformedZipContainerError) do
174
+ assert_nothing_raised(ZipContainer::MalformedContainerError) do
175
175
  ManagedZipContainer.verify!(filename)
176
176
  end
177
177
  end
@@ -198,7 +198,7 @@ class TestManagedEntries < Test::Unit::TestCase
198
198
 
199
199
  assert_nothing_raised do
200
200
  ExampleZipContainer2.create(filename) do |c|
201
- assert_raises(ZipContainer::MalformedZipContainerError) do
201
+ assert_raises(ZipContainer::MalformedContainerError) do
202
202
  c.verify!
203
203
  end
204
204
 
@@ -206,7 +206,7 @@ class TestManagedEntries < Test::Unit::TestCase
206
206
  f.puts "Goodbye!"
207
207
  end
208
208
 
209
- assert_raises(ZipContainer::MalformedZipContainerError) do
209
+ assert_raises(ZipContainer::MalformedContainerError) do
210
210
  c.verify!
211
211
  end
212
212
 
@@ -214,14 +214,14 @@ class TestManagedEntries < Test::Unit::TestCase
214
214
  f.puts "Hello, Y'All!"
215
215
  end
216
216
 
217
- assert_nothing_raised(ZipContainer::MalformedZipContainerError) do
217
+ assert_nothing_raised(ZipContainer::MalformedContainerError) do
218
218
  c.verify!
219
219
  end
220
220
  end
221
221
  end
222
222
 
223
223
  assert(ExampleZipContainer2.verify(filename))
224
- assert_nothing_raised(ZipContainer::MalformedZipContainerError) do
224
+ assert_nothing_raised(ZipContainer::MalformedContainerError) do
225
225
  ExampleZipContainer2.verify!(filename)
226
226
  end
227
227
  end
data/test/tc_read.rb CHANGED
@@ -46,7 +46,7 @@ class TestRead < Test::Unit::TestCase
46
46
 
47
47
  # Check that the empty container file does verify.
48
48
  def test_verify_empty_container
49
- assert_nothing_raised(ZipContainer::MalformedZipContainerError, Zip::ZipError) do
49
+ assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
50
50
  ZipContainer::Container.verify!($empty)
51
51
  end
52
52
 
@@ -55,7 +55,7 @@ class TestRead < Test::Unit::TestCase
55
55
 
56
56
  # Check that the empty zip file does not verify.
57
57
  def test_verify_empty_zip
58
- assert_raise(ZipContainer::MalformedZipContainerError) do
58
+ assert_raise(ZipContainer::MalformedContainerError) do
59
59
  ZipContainer::Container.verify!($empty_zip)
60
60
  end
61
61
 
@@ -64,7 +64,7 @@ class TestRead < Test::Unit::TestCase
64
64
 
65
65
  # Check that a compressed mimetype file is detected.
66
66
  def test_verify_compressed_mimetype
67
- assert_raise(ZipContainer::MalformedZipContainerError) do
67
+ assert_raise(ZipContainer::MalformedContainerError) do
68
68
  ZipContainer::Container.verify!($compressed_mimetype)
69
69
  end
70
70
 
@@ -83,7 +83,7 @@ class TestRead < Test::Unit::TestCase
83
83
  # Check reading files out of a container file and make sure we don't change
84
84
  # it.
85
85
  def test_read_files_from_container
86
- assert_nothing_raised(ZipContainer::MalformedZipContainerError, Zip::ZipError) do
86
+ assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
87
87
  ZipContainer::Container.open($example) do |c|
88
88
  assert(c.on_disk?)
89
89
  refute(c.in_memory?)
@@ -58,7 +58,7 @@ class TestReservedNames < Test::Unit::TestCase
58
58
  def test_verify_reserved_name
59
59
  assert(NewZipContainer.verify($example))
60
60
 
61
- assert_nothing_raised(ZipContainer::MalformedZipContainerError) do
61
+ assert_nothing_raised(ZipContainer::MalformedContainerError) do
62
62
  NewZipContainer.verify!($example)
63
63
  end
64
64
  end
data/version.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
- :minor: 8
3
+ :minor: 9
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.8.0"
8
+ s.version = "0.9.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-26"
12
+ s.date = "2013-06-27"
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 = [
@@ -22,8 +22,8 @@ Gem::Specification.new do |s|
22
22
  "Licence.rdoc",
23
23
  "Rakefile",
24
24
  "ReadMe.rdoc",
25
- "examples/create-zip-container.rb",
26
- "examples/verify-zip-container.rb",
25
+ "examples/create-zip-container",
26
+ "examples/verify-zip-container",
27
27
  "examples/zip-container-info",
28
28
  "lib/zip-container.rb",
29
29
  "lib/zip-container/container.rb",
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.8.0
4
+ version: 0.9.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-26 00:00:00.000000000 Z
12
+ date: 2013-06-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -91,8 +91,8 @@ files:
91
91
  - Licence.rdoc
92
92
  - Rakefile
93
93
  - ReadMe.rdoc
94
- - examples/create-zip-container.rb
95
- - examples/verify-zip-container.rb
94
+ - examples/create-zip-container
95
+ - examples/verify-zip-container
96
96
  - examples/zip-container-info
97
97
  - lib/zip-container.rb
98
98
  - lib/zip-container/container.rb