ucf 0.7.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +9 -0
- data/.ruby-gemset +2 -0
- data/.ruby-version +2 -0
- data/.travis.yml +11 -0
- data/Changes.rdoc +6 -0
- data/Gemfile +35 -0
- data/Rakefile +3 -36
- data/ReadMe.rdoc +12 -0
- data/examples/create-ucf +1 -0
- data/examples/ucfinfo +1 -0
- data/examples/verify-ucf +1 -0
- data/lib/ucf.rb +7 -15
- data/lib/ucf/{container.rb → file.rb} +9 -9
- data/lib/ucf/meta-inf.rb +2 -2
- data/lib/ucf/version.rb +46 -0
- data/test/tc_create.rb +6 -6
- data/test/tc_managed_entries.rb +16 -12
- data/test/tc_read.rb +11 -11
- data/test/tc_reserved_names.rb +11 -11
- data/test/ts_ucf.rb +3 -0
- data/ucf.gemspec +57 -71
- data/version.yml +2 -2
- metadata +49 -29
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZTZhODA5Mzk1MDg1NWRlNzI4ZDk1M2IzZTEyNjAyNjVlNjYyYzNiZg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YzBlMWZkNmI5M2M1MzgzOTAzYTYxYTBmOTZhZjZkNmYwOGExNTdjOA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZDc2YTAxOGUwMTc2N2ZhZTg2ZjJjNzUxMjJmNWJjOGJhOTJhZTRkMDFjY2M2
|
10
|
+
YjExZTIwMzIyZThhMjY5NmExYjE5MmYzMWIxNzZjYWFhN2YwMGVlNWM1NWQ3
|
11
|
+
YmNlOTAyMTUwNmQ4MjNjY2NlOWVkYzFlZDdhZTI0MTE2YmZhMDM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZGNlZmI1ZTBlNjNkMWZmOTEyYzFlNWUzZGFiZDU2NmJhMjFkMDdlMGM1NmY4
|
14
|
+
YzQzMjI1NjA3MzFhYjk1Njc3Yjg4MDA3NGQyYTAyMDQ5OWU4OTkyMjRlOTY1
|
15
|
+
ZTY3MDUyOWM2ZDI3ZTNjNjkxYjllZmIyM2E4Y2Q5YzU5YmU4MmY=
|
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
data/.ruby-version
ADDED
data/.travis.yml
ADDED
data/Changes.rdoc
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
= Changes log for the UCF Ruby Gem
|
2
2
|
|
3
|
+
== Version 1.0.0
|
4
|
+
|
5
|
+
* Rename UCF::Container to UCF::File.
|
6
|
+
* Use released zip-container 2.0 gem.
|
7
|
+
* Remove UCF::Container compatibility.
|
8
|
+
|
3
9
|
== Version 0.7.0
|
4
10
|
|
5
11
|
* Update to be able to use the newer zip-container gem.
|
data/Gemfile
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Copyright (c) 2014 The University of Manchester, UK.
|
2
|
+
#
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# * Neither the names of The University of Manchester nor the names of its
|
16
|
+
# contributors may be used to endorse or promote products derived from this
|
17
|
+
# software without specific prior written permission.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
#
|
31
|
+
# Author: Robert Haines
|
32
|
+
|
33
|
+
source "https://rubygems.org"
|
34
|
+
|
35
|
+
gemspec
|
data/Rakefile
CHANGED
@@ -30,45 +30,12 @@
|
|
30
30
|
#
|
31
31
|
# Author: Robert Haines
|
32
32
|
|
33
|
-
require
|
34
|
-
require
|
35
|
-
require
|
36
|
-
require 'rake/testtask'
|
37
|
-
require 'rdoc/task'
|
38
|
-
require 'jeweler'
|
39
|
-
|
40
|
-
# we need to add lib to the path because we're not installed yet!
|
41
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), "lib")
|
42
|
-
require 'ucf'
|
33
|
+
require "bundler/gem_tasks"
|
34
|
+
require "rake/testtask"
|
35
|
+
require "rdoc/task"
|
43
36
|
|
44
37
|
task :default => [:test]
|
45
38
|
|
46
|
-
Jeweler::Tasks.new do |s|
|
47
|
-
s.name = "ucf"
|
48
|
-
s.version = UCF::Version::STRING
|
49
|
-
s.authors = ["Robert Haines"]
|
50
|
-
s.email = ["support@mygrid.org.uk"]
|
51
|
-
s.homepage = "http://mygrid.github.io/ruby-ucf/"
|
52
|
-
s.platform = Gem::Platform::RUBY
|
53
|
-
s.summary = "Universal Container Format (UCF) Ruby Library"
|
54
|
-
s.description = "A Ruby library for working with Universal Container "\
|
55
|
-
"Format files - a type of EPUB document. See the UCF specification "\
|
56
|
-
"(https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format)"\
|
57
|
-
" for details. They are very similar, although not as restrictive, as "\
|
58
|
-
"the EPUB Open Container Format (OCF) "\
|
59
|
-
"(http://www.idpf.org/epub/30/spec/epub30-ocf.html)."
|
60
|
-
s.require_path = "lib"
|
61
|
-
s.test_file = "test/ts_ucf.rb"
|
62
|
-
s.has_rdoc = true
|
63
|
-
s.extra_rdoc_files = ["ReadMe.rdoc", "Licence.rdoc", "Changes.rdoc"]
|
64
|
-
s.rdoc_options = ["-N", "--tab-width=2", "--main=ReadMe.rdoc"]
|
65
|
-
s.add_development_dependency('rake', '~> 10.0.4')
|
66
|
-
s.add_development_dependency('rdoc', '~> 4.0.1')
|
67
|
-
s.add_development_dependency('jeweler', '~> 1.8.4')
|
68
|
-
s.add_development_dependency('nokogiri', '~> 1.6')
|
69
|
-
s.add_runtime_dependency('zip-container', '>= 0.9.0')
|
70
|
-
end
|
71
|
-
|
72
39
|
Rake::TestTask.new do |t|
|
73
40
|
t.libs << "test"
|
74
41
|
t.test_files = FileList['test/ts_ucf.rb']
|
data/ReadMe.rdoc
CHANGED
@@ -9,6 +9,8 @@ Copyright:: (c) 2013, 2014 The University of Manchester, UK
|
|
9
9
|
|
10
10
|
{<img src="https://badge.fury.io/rb/ucf.png" alt="Gem Version" />}[http://badge.fury.io/rb/ucf]
|
11
11
|
{<img src="https://codeclimate.com/github/myGrid/ruby-ucf.png" />}[https://codeclimate.com/github/myGrid/ruby-ucf]
|
12
|
+
{<img src="https://travis-ci.org/myGrid/ruby-ucf.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/myGrid/ruby-ucf]
|
13
|
+
{<img src="https://coveralls.io/repos/myGrid/ruby-ucf/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/myGrid/ruby-ucf?branch=master]
|
12
14
|
|
13
15
|
== Synopsis
|
14
16
|
|
@@ -42,6 +44,16 @@ library will use it to validate the contents of the <tt>container.xml</tt> and
|
|
42
44
|
case they are not using the META-INF directory and so would not need the extra
|
43
45
|
dependency on nokogiri.
|
44
46
|
|
47
|
+
== Backwards incompatibility warning!
|
48
|
+
|
49
|
+
The UCF::Container class is deprecated in favour of UCF::File. These classes
|
50
|
+
are functionally identical; it is just a change of name. The new name brings
|
51
|
+
this API into closer alignment with the underlying
|
52
|
+
{zip-container API}[http://mygrid.github.io/ruby-zip-container/]
|
53
|
+
(ZipContainer::File).
|
54
|
+
|
55
|
+
UCF::Container is not available from version 1.0.0 onwards.
|
56
|
+
|
45
57
|
== What this library can not do yet
|
46
58
|
|
47
59
|
The basic requirements of a UCF document are all implemented but there are a
|
data/examples/create-ucf
CHANGED
data/examples/ucfinfo
CHANGED
data/examples/verify-ucf
CHANGED
data/lib/ucf.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2013 The University of Manchester, UK.
|
1
|
+
# Copyright (c) 2013, 2014 The University of Manchester, UK.
|
2
2
|
#
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
@@ -30,28 +30,20 @@
|
|
30
30
|
#
|
31
31
|
# Author: Robert Haines
|
32
32
|
|
33
|
-
require '
|
33
|
+
require 'rubygems'
|
34
|
+
require 'bundler/setup'
|
35
|
+
|
34
36
|
require 'zip-container'
|
35
37
|
|
38
|
+
require 'ucf/version'
|
36
39
|
require 'ucf/meta-inf'
|
37
|
-
require 'ucf/
|
40
|
+
require 'ucf/file'
|
38
41
|
|
39
42
|
# This is a ruby library to read and write UCF files in PK Zip format. See the
|
40
|
-
# UCF::
|
43
|
+
# UCF::File class for more information.
|
41
44
|
#
|
42
45
|
# See
|
43
46
|
# {the UCF specification}[https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format]
|
44
47
|
# for more details.
|
45
48
|
module UCF
|
46
|
-
|
47
|
-
# Library version information.
|
48
|
-
module Version
|
49
|
-
# Version information in a Hash
|
50
|
-
INFO = YAML.load_file(File.join(File.dirname(__FILE__), "..",
|
51
|
-
"version.yml"))
|
52
|
-
|
53
|
-
# Version number as a String
|
54
|
-
STRING = [:major, :minor, :patch].map {|d| INFO[d]}.compact.join('.')
|
55
|
-
end
|
56
|
-
|
57
49
|
end
|
@@ -33,20 +33,20 @@
|
|
33
33
|
#
|
34
34
|
module UCF
|
35
35
|
|
36
|
-
# This class represents a UCF document - also known as an EPUB and very
|
36
|
+
# This class represents a UCF document file - also known as an EPUB and very
|
37
37
|
# similar to the
|
38
38
|
# {EPUB Open Container Format (OCF)}[http://www.idpf.org/epub/30/spec/epub30-ocf.html].
|
39
39
|
# See the
|
40
40
|
# {UCF specification}[https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format]
|
41
41
|
# for more details.
|
42
42
|
#
|
43
|
-
# This class is a specialization of ZipContainer so you should see the
|
43
|
+
# This class is a specialization of ZipContainer::File so you should see the
|
44
44
|
# {ZipContainer documentation}[http://mygrid.github.io/ruby-zip-container/]
|
45
45
|
# for much more information and a list of all the other methods available in
|
46
46
|
# this class. RDoc does not list inherited methods, unfortunately.
|
47
47
|
#
|
48
48
|
# There are code examples available with the source code of this library.
|
49
|
-
class
|
49
|
+
class File < ZipContainer::File
|
50
50
|
|
51
51
|
private_class_method :new
|
52
52
|
|
@@ -62,12 +62,12 @@ module UCF
|
|
62
62
|
# :startdoc:
|
63
63
|
|
64
64
|
# :call-seq:
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
68
|
-
#
|
65
|
+
# create(filename) -> UCF::File
|
66
|
+
# create(filename, mimetype) -> UCF::FILE
|
67
|
+
# create(filename) {|file| ...}
|
68
|
+
# create(filename, mimetype) {|file| ...}
|
69
69
|
#
|
70
|
-
# Create a new UCF document on disk and open it for editing. A custom
|
70
|
+
# Create a new UCF document file on disk and open it for editing. A custom
|
71
71
|
# mimetype for the container may be specified but if not the default,
|
72
72
|
# "application/epub+zip", will be used.
|
73
73
|
#
|
@@ -75,7 +75,7 @@ module UCF
|
|
75
75
|
# {ZipContainer documentation}[http://mygrid.github.io/ruby-zip-container/]
|
76
76
|
# for much more information and a list of all the other methods available
|
77
77
|
# in this class. RDoc does not list inherited methods, unfortunately.
|
78
|
-
def
|
78
|
+
def self.create(filename, mimetype = DEFAULT_MIMETYPE, &block)
|
79
79
|
super(filename, mimetype, &block)
|
80
80
|
end
|
81
81
|
|
data/lib/ucf/meta-inf.rb
CHANGED
@@ -51,7 +51,7 @@ module UCF
|
|
51
51
|
#
|
52
52
|
# Create a standard META-INF ManagedDirectory.
|
53
53
|
def initialize
|
54
|
-
super("META-INF", false,
|
54
|
+
super("META-INF", :required => false, :entries =>
|
55
55
|
[
|
56
56
|
File.new("container.xml", CONTAINER_SCHEMA),
|
57
57
|
File.new("manifest.xml", MANIFEST_SCHEMA),
|
@@ -66,7 +66,7 @@ module UCF
|
|
66
66
|
class File < ZipContainer::ManagedFile
|
67
67
|
|
68
68
|
def initialize(name, schema = nil)
|
69
|
-
super(name, false)
|
69
|
+
super(name, :required => false)
|
70
70
|
|
71
71
|
@schema = nil
|
72
72
|
if defined?(::Nokogiri)
|
data/lib/ucf/version.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (c) 2014 The University of Manchester, UK.
|
2
|
+
#
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# * Neither the names of The University of Manchester nor the names of its
|
16
|
+
# contributors may be used to endorse or promote products derived from this
|
17
|
+
# software without specific prior written permission.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
#
|
31
|
+
# Author: Robert Haines
|
32
|
+
|
33
|
+
require 'yaml'
|
34
|
+
|
35
|
+
module UCF
|
36
|
+
|
37
|
+
# Library version information.
|
38
|
+
module Version
|
39
|
+
# Version information in a Hash
|
40
|
+
INFO = YAML.load_file(File.join(File.dirname(__FILE__), "..", "..",
|
41
|
+
"version.yml"))
|
42
|
+
|
43
|
+
# Version number as a String
|
44
|
+
STRING = [:major, :minor, :patch].map {|d| INFO[d]}.compact.join('.')
|
45
|
+
end
|
46
|
+
end
|
data/test/tc_create.rb
CHANGED
@@ -42,7 +42,7 @@ class TestCreation < Test::Unit::TestCase
|
|
42
42
|
filename = File.join(dir, "test.ucf")
|
43
43
|
|
44
44
|
assert_nothing_raised do
|
45
|
-
UCF::
|
45
|
+
UCF::File.create(filename) do |c|
|
46
46
|
assert(c.on_disk?)
|
47
47
|
refute(c.in_memory?)
|
48
48
|
|
@@ -57,7 +57,7 @@ class TestCreation < Test::Unit::TestCase
|
|
57
57
|
end
|
58
58
|
|
59
59
|
assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
|
60
|
-
UCF::
|
60
|
+
UCF::File.verify!(filename)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -70,7 +70,7 @@ class TestCreation < Test::Unit::TestCase
|
|
70
70
|
filename = File.join(dir, "test.ucf")
|
71
71
|
|
72
72
|
assert_nothing_raised do
|
73
|
-
UCF::
|
73
|
+
UCF::File.create(filename, mimetype) do |c|
|
74
74
|
assert(c.on_disk?)
|
75
75
|
refute(c.in_memory?)
|
76
76
|
|
@@ -87,7 +87,7 @@ class TestCreation < Test::Unit::TestCase
|
|
87
87
|
end
|
88
88
|
|
89
89
|
assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
|
90
|
-
UCF::
|
90
|
+
UCF::File.verify!(filename)
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
@@ -99,7 +99,7 @@ class TestCreation < Test::Unit::TestCase
|
|
99
99
|
filename = File.join(dir, "test.ucf")
|
100
100
|
|
101
101
|
assert_nothing_raised do
|
102
|
-
UCF::
|
102
|
+
UCF::File.create(filename) do |ucf|
|
103
103
|
assert(ucf.on_disk?)
|
104
104
|
refute(ucf.in_memory?)
|
105
105
|
|
@@ -130,7 +130,7 @@ class TestCreation < Test::Unit::TestCase
|
|
130
130
|
end
|
131
131
|
|
132
132
|
assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
|
133
|
-
UCF::
|
133
|
+
UCF::File.open(filename) do |ucf|
|
134
134
|
assert(ucf.on_disk?)
|
135
135
|
refute(ucf.in_memory?)
|
136
136
|
|
data/test/tc_managed_entries.rb
CHANGED
@@ -35,33 +35,37 @@ require 'tmpdir'
|
|
35
35
|
require 'ucf'
|
36
36
|
|
37
37
|
# Classes to test managed entries.
|
38
|
-
class ManagedUCF < UCF::
|
38
|
+
class ManagedUCF < UCF::File
|
39
39
|
|
40
40
|
private_class_method :new
|
41
41
|
|
42
42
|
def initialize(filename)
|
43
43
|
super(filename)
|
44
|
-
register_managed_entry(ZipContainer::ManagedDirectory.new("src",
|
44
|
+
register_managed_entry(ZipContainer::ManagedDirectory.new("src",
|
45
|
+
:required => true))
|
45
46
|
register_managed_entry(ZipContainer::ManagedDirectory.new("test"))
|
46
47
|
register_managed_entry(ZipContainer::ManagedDirectory.new("lib"))
|
47
|
-
register_managed_entry(ZipContainer::ManagedFile.new("index.html",
|
48
|
+
register_managed_entry(ZipContainer::ManagedFile.new("index.html",
|
49
|
+
:required => true))
|
48
50
|
end
|
49
51
|
|
50
52
|
end
|
51
53
|
|
52
|
-
class ExampleUCF < UCF::
|
54
|
+
class ExampleUCF < UCF::File
|
53
55
|
|
54
56
|
private_class_method :new
|
55
57
|
|
56
58
|
def initialize(filename)
|
57
59
|
super(filename)
|
58
|
-
register_managed_entry(ZipContainer::ManagedDirectory.new("dir",
|
59
|
-
|
60
|
+
register_managed_entry(ZipContainer::ManagedDirectory.new("dir",
|
61
|
+
:required => true))
|
62
|
+
register_managed_entry(ZipContainer::ManagedFile.new("greeting.txt",
|
63
|
+
:required => true))
|
60
64
|
end
|
61
65
|
|
62
66
|
end
|
63
67
|
|
64
|
-
class ExampleUCF2 < UCF::
|
68
|
+
class ExampleUCF2 < UCF::File
|
65
69
|
|
66
70
|
private_class_method :new
|
67
71
|
|
@@ -70,7 +74,7 @@ class ExampleUCF2 < UCF::Container
|
|
70
74
|
|
71
75
|
valid = Proc.new { |contents| contents.match(/[Hh]ello/) }
|
72
76
|
register_managed_entry(ZipContainer::ManagedFile.new("greeting.txt",
|
73
|
-
|
77
|
+
:required => true, :validation_proc => valid))
|
74
78
|
end
|
75
79
|
|
76
80
|
end
|
@@ -111,7 +115,7 @@ class TestManagedEntries < Test::Unit::TestCase
|
|
111
115
|
filename = File.join(dir, "test.ucf")
|
112
116
|
|
113
117
|
assert_nothing_raised do
|
114
|
-
UCF::
|
118
|
+
UCF::File.create(filename) do |c|
|
115
119
|
c.mkdir("META-INF")
|
116
120
|
assert(c.file.exists?("META-INF"))
|
117
121
|
|
@@ -124,7 +128,7 @@ class TestManagedEntries < Test::Unit::TestCase
|
|
124
128
|
end
|
125
129
|
|
126
130
|
assert_nothing_raised(ZipContainer::MalformedContainerError) do
|
127
|
-
UCF::
|
131
|
+
UCF::File.verify!(filename)
|
128
132
|
end
|
129
133
|
end
|
130
134
|
end
|
@@ -176,7 +180,7 @@ class TestManagedEntries < Test::Unit::TestCase
|
|
176
180
|
Dir.mktmpdir do |dir|
|
177
181
|
filename = File.join(dir, "test.ucf")
|
178
182
|
|
179
|
-
assert_nothing_raised do
|
183
|
+
#assert_nothing_raised do
|
180
184
|
ExampleUCF2.create(filename) do |c|
|
181
185
|
assert_raises(ZipContainer::MalformedContainerError) do
|
182
186
|
c.verify!
|
@@ -198,7 +202,7 @@ class TestManagedEntries < Test::Unit::TestCase
|
|
198
202
|
c.verify!
|
199
203
|
end
|
200
204
|
end
|
201
|
-
end
|
205
|
+
#end
|
202
206
|
|
203
207
|
assert(ExampleUCF2.verify(filename))
|
204
208
|
assert_nothing_raised(ZipContainer::MalformedContainerError) do
|
data/test/tc_read.rb
CHANGED
@@ -38,46 +38,46 @@ class TestRead < Test::Unit::TestCase
|
|
38
38
|
# Check that the null file does not verify.
|
39
39
|
def test_verify_null_file
|
40
40
|
assert_raise(Zip::ZipError) do
|
41
|
-
UCF::
|
41
|
+
UCF::File.verify!($file_null)
|
42
42
|
end
|
43
43
|
|
44
|
-
refute(UCF::
|
44
|
+
refute(UCF::File.verify($file_null))
|
45
45
|
end
|
46
46
|
|
47
47
|
# Check that the empty ucf file does verify.
|
48
48
|
def test_verify_empty_ucf
|
49
49
|
assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
|
50
|
-
UCF::
|
50
|
+
UCF::File.verify!($ucf_empty)
|
51
51
|
end
|
52
52
|
|
53
|
-
assert(UCF::
|
53
|
+
assert(UCF::File.verify($ucf_empty))
|
54
54
|
end
|
55
55
|
|
56
56
|
# Check that the example ucf file does verify.
|
57
57
|
def test_verify_example_ucf
|
58
58
|
assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
|
59
|
-
UCF::
|
59
|
+
UCF::File.verify!($ucf_example)
|
60
60
|
end
|
61
61
|
|
62
|
-
assert(UCF::
|
62
|
+
assert(UCF::File.verify($ucf_example))
|
63
63
|
end
|
64
64
|
|
65
65
|
# Check that the empty zip file does not verify.
|
66
66
|
def test_verify_empty_zip
|
67
67
|
assert_raise(ZipContainer::MalformedContainerError) do
|
68
|
-
UCF::
|
68
|
+
UCF::File.verify!($zip_empty)
|
69
69
|
end
|
70
70
|
|
71
|
-
refute(UCF::
|
71
|
+
refute(UCF::File.verify($zip_empty))
|
72
72
|
end
|
73
73
|
|
74
74
|
# Check that a compressed mimetype file is detected.
|
75
75
|
def test_verify_compressed_mimetype
|
76
76
|
assert_raise(ZipContainer::MalformedContainerError) do
|
77
|
-
UCF::
|
77
|
+
UCF::File.verify!($ucf_compressed_mimetype)
|
78
78
|
end
|
79
79
|
|
80
|
-
refute(UCF::
|
80
|
+
refute(UCF::File.verify($ucf_compressed_mimetype))
|
81
81
|
end
|
82
82
|
|
83
83
|
# Check the raw mimetype bytes
|
@@ -92,7 +92,7 @@ class TestRead < Test::Unit::TestCase
|
|
92
92
|
# Check reading files out of a ucf file and make sure we don't change it.
|
93
93
|
def test_read_files_from_ucf
|
94
94
|
assert_nothing_raised(ZipContainer::MalformedContainerError, Zip::ZipError) do
|
95
|
-
UCF::
|
95
|
+
UCF::File.open($ucf_example) do |ucf|
|
96
96
|
assert(ucf.on_disk?)
|
97
97
|
refute(ucf.in_memory?)
|
98
98
|
|
data/test/tc_reserved_names.rb
CHANGED
@@ -34,7 +34,7 @@ require 'test/unit'
|
|
34
34
|
require 'ucf'
|
35
35
|
|
36
36
|
# A class to test the overriding of reserved and managed names.
|
37
|
-
class NewUCF < UCF::
|
37
|
+
class NewUCF < UCF::File
|
38
38
|
|
39
39
|
private_class_method :new
|
40
40
|
|
@@ -64,7 +64,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
64
64
|
# Check the reserved names stuff all works correctly, baring in mind that
|
65
65
|
# such comparisons for UCF documents should be case sensitive.
|
66
66
|
def test_reserved_names
|
67
|
-
UCF::
|
67
|
+
UCF::File.open($ucf_example) do |ucf|
|
68
68
|
assert_equal(1, ucf.reserved_names.length)
|
69
69
|
assert_equal(["mimetype"], ucf.reserved_names)
|
70
70
|
assert_equal(6, ucf.managed_files.length)
|
@@ -148,7 +148,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
148
148
|
|
149
149
|
# Check that nothing happens when trying to delete the mimetype file.
|
150
150
|
def test_delete_mimetype
|
151
|
-
UCF::
|
151
|
+
UCF::File.open($ucf_example) do |ucf|
|
152
152
|
assert(ucf.file.exists?("mimetype"))
|
153
153
|
assert_nil(ucf.remove("mimetype"))
|
154
154
|
assert(ucf.file.exists?("mimetype"))
|
@@ -157,7 +157,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
157
157
|
|
158
158
|
# Check that nothing happens when trying to rename the mimetype file.
|
159
159
|
def test_rename_mimetype
|
160
|
-
UCF::
|
160
|
+
UCF::File.open($ucf_example) do |ucf|
|
161
161
|
assert(ucf.file.exists?("mimetype"))
|
162
162
|
assert_nil(ucf.rename("mimetype", "something-else"))
|
163
163
|
assert(ucf.file.exists?("mimetype"))
|
@@ -168,7 +168,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
168
168
|
# Check that nothing happens when trying to replace the contents of the
|
169
169
|
# mimetype file.
|
170
170
|
def test_replace_mimetype
|
171
|
-
UCF::
|
171
|
+
UCF::File.open($ucf_example) do |ucf|
|
172
172
|
assert(ucf.file.exists?("mimetype"))
|
173
173
|
assert_nil(ucf.replace("mimetype", $zip_empty))
|
174
174
|
assert_equal("application/epub+zip", ucf.file.read("mimetype"))
|
@@ -178,7 +178,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
178
178
|
# Check that an exception is raised when trying to add file with a reserved
|
179
179
|
# name.
|
180
180
|
def test_add_reserved
|
181
|
-
UCF::
|
181
|
+
UCF::File.open($ucf_empty) do |ucf|
|
182
182
|
assert_raises(ZipContainer::ReservedNameClashError) do
|
183
183
|
ucf.add("META-INF", $zip_empty)
|
184
184
|
end
|
@@ -210,7 +210,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
210
210
|
# Check that the META-INF directory is detected as non-existent when trying
|
211
211
|
# to delete it.
|
212
212
|
def test_delete_metainf
|
213
|
-
UCF::
|
213
|
+
UCF::File.open($ucf_example) do |ucf|
|
214
214
|
assert_raises(Errno::ENOENT) do
|
215
215
|
ucf.remove("META-INF")
|
216
216
|
end
|
@@ -220,7 +220,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
220
220
|
# Check that the META-INF directory is detected as non-existent when trying
|
221
221
|
# to rename it.
|
222
222
|
def test_rename_metainf
|
223
|
-
UCF::
|
223
|
+
UCF::File.open($ucf_example) do |ucf|
|
224
224
|
assert_raises(Errno::ENOENT) do
|
225
225
|
ucf.rename("META-INF", "something-else")
|
226
226
|
end
|
@@ -230,7 +230,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
230
230
|
# Check that an exception is raised when trying to create a directory with a
|
231
231
|
# reserved name.
|
232
232
|
def test_mkdir_reserved
|
233
|
-
UCF::
|
233
|
+
UCF::File.open($ucf_empty) do |ucf|
|
234
234
|
assert_raises(ZipContainer::ReservedNameClashError) do
|
235
235
|
ucf.mkdir("mimetype")
|
236
236
|
end
|
@@ -269,7 +269,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
269
269
|
|
270
270
|
# Check that a file cannot be renamed to one of the reserved names.
|
271
271
|
def test_rename_to_reserved
|
272
|
-
UCF::
|
272
|
+
UCF::File.open($ucf_example) do |ucf|
|
273
273
|
assert_raises(ZipContainer::ReservedNameClashError) do
|
274
274
|
ucf.rename("dir/code.rb", "mimetype")
|
275
275
|
end
|
@@ -293,7 +293,7 @@ class TestReservedNames < Test::Unit::TestCase
|
|
293
293
|
# Check that the ruby-like File and Dir classes respect reserved and managed
|
294
294
|
# names.
|
295
295
|
def test_file_dir_ops_reserved
|
296
|
-
UCF::
|
296
|
+
UCF::File.open($ucf_empty) do |ucf|
|
297
297
|
assert_raises(ZipContainer::ReservedNameClashError) do
|
298
298
|
ucf.file.open("META-INF", "w") do |f|
|
299
299
|
f.puts "TESTING"
|
data/test/ts_ucf.rb
CHANGED
data/ucf.gemspec
CHANGED
@@ -1,79 +1,65 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# Copyright (c) 2013, 2014 The University of Manchester, UK.
|
2
|
+
#
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# * Neither the names of The University of Manchester nor the names of its
|
16
|
+
# contributors may be used to endorse or promote products derived from this
|
17
|
+
# software without specific prior written permission.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
#
|
31
|
+
# Author: Robert Haines
|
32
|
+
|
33
|
+
lib = File.expand_path('../lib', __FILE__)
|
34
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
35
|
+
require "ucf/version"
|
5
36
|
|
6
37
|
Gem::Specification.new do |s|
|
7
38
|
s.name = "ucf"
|
8
|
-
s.version =
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
39
|
+
s.version = UCF::Version::STRING
|
11
40
|
s.authors = ["Robert Haines"]
|
12
|
-
s.date = "2014-01-03"
|
13
|
-
s.description = "A Ruby library for working with Universal Container Format files - a type of EPUB document. See the UCF specification (https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format) for details. They are very similar, although not as restrictive, as the EPUB Open Container Format (OCF) (http://www.idpf.org/epub/30/spec/epub30-ocf.html)."
|
14
41
|
s.email = ["support@mygrid.org.uk"]
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"Changes.rdoc",
|
17
|
-
"Licence.rdoc",
|
18
|
-
"ReadMe.rdoc"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
"Changes.rdoc",
|
22
|
-
"Licence.rdoc",
|
23
|
-
"Rakefile",
|
24
|
-
"ReadMe.rdoc",
|
25
|
-
"examples/create-ucf",
|
26
|
-
"examples/ucfinfo",
|
27
|
-
"examples/verify-ucf",
|
28
|
-
"lib/ucf.rb",
|
29
|
-
"lib/ucf/container.rb",
|
30
|
-
"lib/ucf/meta-inf.rb",
|
31
|
-
"lib/ucf/schema/OpenDocument-manifest-schema-v1.0-os.rng",
|
32
|
-
"lib/ucf/schema/container.rng",
|
33
|
-
"test/data/META-INF/container.xml",
|
34
|
-
"test/data/META-INF/manifest.xml",
|
35
|
-
"test/data/compressed_mimetype.ucf",
|
36
|
-
"test/data/empty.ucf",
|
37
|
-
"test/data/empty.zip",
|
38
|
-
"test/data/example.ucf",
|
39
|
-
"test/data/null.file",
|
40
|
-
"test/tc_create.rb",
|
41
|
-
"test/tc_managed_entries.rb",
|
42
|
-
"test/tc_read.rb",
|
43
|
-
"test/tc_reserved_names.rb",
|
44
|
-
"test/ts_ucf.rb",
|
45
|
-
"ucf.gemspec",
|
46
|
-
"version.yml"
|
47
|
-
]
|
48
42
|
s.homepage = "http://mygrid.github.io/ruby-ucf/"
|
49
|
-
s.
|
50
|
-
s.require_paths = ["lib"]
|
51
|
-
s.rubygems_version = "1.8.21"
|
43
|
+
s.platform = Gem::Platform::RUBY
|
52
44
|
s.summary = "Universal Container Format (UCF) Ruby Library"
|
53
|
-
s.
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
s.add_dependency(%q<rdoc>, ["~> 4.0.1"])
|
74
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
75
|
-
s.add_dependency(%q<nokogiri>, ["~> 1.6"])
|
76
|
-
s.add_dependency(%q<zip-container>, [">= 0.9.0"])
|
77
|
-
end
|
45
|
+
s.description = "A Ruby library for working with Universal Container "\
|
46
|
+
"Format files - a type of EPUB document. See the UCF specification "\
|
47
|
+
"(https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format) "\
|
48
|
+
"for details. They are very similar, although not as restrictive, as "\
|
49
|
+
"the EPUB Open Container Format (OCF) "\
|
50
|
+
"(http://www.idpf.org/epub/30/spec/epub30-ocf.html)."
|
51
|
+
s.license = "BSD"
|
52
|
+
s.require_path = "lib"
|
53
|
+
s.files = `git ls-files`.split($/)
|
54
|
+
s.test_files = `git ls-files -- test/*`.split($/)
|
55
|
+
s.has_rdoc = true
|
56
|
+
s.extra_rdoc_files = [ "Changes.rdoc", "Licence.rdoc", "ReadMe.rdoc" ]
|
57
|
+
s.rdoc_options = ["-N", "--tab-width=2", "--main=ReadMe.rdoc"]
|
58
|
+
s.required_ruby_version = ">= 1.9.3"
|
59
|
+
s.add_development_dependency("rake", "~> 10.0.4")
|
60
|
+
s.add_development_dependency("bundler", "~> 1.5")
|
61
|
+
s.add_development_dependency("rdoc", "~> 4.0.1")
|
62
|
+
s.add_development_dependency("coveralls")
|
63
|
+
s.add_development_dependency("nokogiri", "~> 1.6")
|
64
|
+
s.add_runtime_dependency("zip-container", "~> 2.0")
|
78
65
|
end
|
79
|
-
|
data/version.yml
CHANGED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ucf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Robert Haines
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-08-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,15 +20,27 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 10.0.4
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: rdoc
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
45
|
- - ~>
|
36
46
|
- !ruby/object:Gem::Version
|
@@ -38,31 +48,27 @@ dependencies:
|
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
52
|
- - ~>
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: 4.0.1
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
56
|
+
name: coveralls
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - ! '>='
|
52
60
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
61
|
+
version: '0'
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ! '>='
|
60
67
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
68
|
+
version: '0'
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: nokogiri
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
73
|
- - ~>
|
68
74
|
- !ruby/object:Gem::Version
|
@@ -70,7 +76,6 @@ dependencies:
|
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
80
|
- - ~>
|
76
81
|
- !ruby/object:Gem::Version
|
@@ -78,19 +83,17 @@ dependencies:
|
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: zip-container
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- -
|
87
|
+
- - ~>
|
84
88
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
89
|
+
version: '2.0'
|
86
90
|
type: :runtime
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - ~>
|
92
95
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
96
|
+
version: '2.0'
|
94
97
|
description: A Ruby library for working with Universal Container Format files - a
|
95
98
|
type of EPUB document. See the UCF specification (https://learn.adobe.com/wiki/display/PDFNAV/Universal+Container+Format)
|
96
99
|
for details. They are very similar, although not as restrictive, as the EPUB Open
|
@@ -104,7 +107,12 @@ extra_rdoc_files:
|
|
104
107
|
- Licence.rdoc
|
105
108
|
- ReadMe.rdoc
|
106
109
|
files:
|
110
|
+
- .gitignore
|
111
|
+
- .ruby-gemset
|
112
|
+
- .ruby-version
|
113
|
+
- .travis.yml
|
107
114
|
- Changes.rdoc
|
115
|
+
- Gemfile
|
108
116
|
- Licence.rdoc
|
109
117
|
- Rakefile
|
110
118
|
- ReadMe.rdoc
|
@@ -112,10 +120,11 @@ files:
|
|
112
120
|
- examples/ucfinfo
|
113
121
|
- examples/verify-ucf
|
114
122
|
- lib/ucf.rb
|
115
|
-
- lib/ucf/
|
123
|
+
- lib/ucf/file.rb
|
116
124
|
- lib/ucf/meta-inf.rb
|
117
125
|
- lib/ucf/schema/OpenDocument-manifest-schema-v1.0-os.rng
|
118
126
|
- lib/ucf/schema/container.rng
|
127
|
+
- lib/ucf/version.rb
|
119
128
|
- test/data/META-INF/container.xml
|
120
129
|
- test/data/META-INF/manifest.xml
|
121
130
|
- test/data/compressed_mimetype.ucf
|
@@ -131,7 +140,9 @@ files:
|
|
131
140
|
- ucf.gemspec
|
132
141
|
- version.yml
|
133
142
|
homepage: http://mygrid.github.io/ruby-ucf/
|
134
|
-
licenses:
|
143
|
+
licenses:
|
144
|
+
- BSD
|
145
|
+
metadata: {}
|
135
146
|
post_install_message:
|
136
147
|
rdoc_options:
|
137
148
|
- -N
|
@@ -140,22 +151,31 @@ rdoc_options:
|
|
140
151
|
require_paths:
|
141
152
|
- lib
|
142
153
|
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
-
none: false
|
144
154
|
requirements:
|
145
155
|
- - ! '>='
|
146
156
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
157
|
+
version: 1.9.3
|
148
158
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
159
|
requirements:
|
151
160
|
- - ! '>='
|
152
161
|
- !ruby/object:Gem::Version
|
153
162
|
version: '0'
|
154
163
|
requirements: []
|
155
164
|
rubyforge_project:
|
156
|
-
rubygems_version:
|
165
|
+
rubygems_version: 2.2.2
|
157
166
|
signing_key:
|
158
|
-
specification_version:
|
167
|
+
specification_version: 4
|
159
168
|
summary: Universal Container Format (UCF) Ruby Library
|
160
169
|
test_files:
|
170
|
+
- test/data/META-INF/container.xml
|
171
|
+
- test/data/META-INF/manifest.xml
|
172
|
+
- test/data/compressed_mimetype.ucf
|
173
|
+
- test/data/empty.ucf
|
174
|
+
- test/data/empty.zip
|
175
|
+
- test/data/example.ucf
|
176
|
+
- test/data/null.file
|
177
|
+
- test/tc_create.rb
|
178
|
+
- test/tc_managed_entries.rb
|
179
|
+
- test/tc_read.rb
|
180
|
+
- test/tc_reserved_names.rb
|
161
181
|
- test/ts_ucf.rb
|