epubinfo 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  = epubinfo {<img src="https://secure.travis-ci.org/chdorner/epubinfo.png?branch=master" alt="Continuous Integration" />}[http://travis-ci.org/chdorner/epubinfo] {<img src="https://gemnasium.com/chdorner/epubinfo.png" alt="Dependencies" />}[http://gemnasium.com/chdorner/epubinfo]
2
2
 
3
- Extracts metadata information from EPUB files. Currently only supports EPUB 2 specification.
3
+ Extracts metadata information from EPUB files. Supports EPUB2 and EPUB3 formats.
4
4
 
5
5
  == Contributing to epubinfo
6
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -0,0 +1,97 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "epubinfo"
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Christof Dorner"]
12
+ s.date = "2012-04-01"
13
+ s.description = "Currently only supports EPUB 3 specification."
14
+ s.email = "christof@chdorner.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".travis.yml",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "Guardfile",
25
+ "LICENSE.txt",
26
+ "README.rdoc",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "epubinfo.gemspec",
30
+ "lib/epubinfo.rb",
31
+ "lib/epubinfo/models/book.rb",
32
+ "lib/epubinfo/models/date.rb",
33
+ "lib/epubinfo/models/identifier.rb",
34
+ "lib/epubinfo/models/person.rb",
35
+ "lib/epubinfo/parser.rb",
36
+ "lib/epubinfo/utils.rb",
37
+ "spec/lib/epubinfo/identifier_spec.rb",
38
+ "spec/lib/epubinfo/models/book_spec.rb",
39
+ "spec/lib/epubinfo/models/date_spec.rb",
40
+ "spec/lib/epubinfo/models/person_spec.rb",
41
+ "spec/lib/epubinfo/parser_spec.rb",
42
+ "spec/lib/epubinfo_spec.rb",
43
+ "spec/spec_helper.rb",
44
+ "spec/support/binary/metamorphosis_epub2.epub",
45
+ "spec/support/binary/wasteland_epub3.epub",
46
+ "spec/support/xml/metamorphosis_metadata_epub2.opf",
47
+ "spec/support/xml/wasteland_metadata_epub3.opf"
48
+ ]
49
+ s.homepage = "http://github.com/chdorner/epubinfo"
50
+ s.licenses = ["MIT"]
51
+ s.require_paths = ["lib"]
52
+ s.rubygems_version = "1.8.11"
53
+ s.summary = "Extracts metadata information from EPUB files"
54
+
55
+ if s.respond_to? :specification_version then
56
+ s.specification_version = 3
57
+
58
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
+ s.add_runtime_dependency(%q<rubyzip>, ["~> 0.9.6"])
60
+ s.add_runtime_dependency(%q<nokogiri>, ["~> 1.5.2"])
61
+ s.add_development_dependency(%q<rspec>, ["~> 2.9.0"])
62
+ s.add_development_dependency(%q<yard>, ["~> 0.7.5"])
63
+ s.add_development_dependency(%q<bundler>, ["~> 1.1.3"])
64
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
65
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
66
+ s.add_development_dependency(%q<guard>, [">= 0"])
67
+ s.add_development_dependency(%q<guard-rspec>, [">= 0"])
68
+ s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
69
+ s.add_development_dependency(%q<growl>, [">= 0"])
70
+ else
71
+ s.add_dependency(%q<rubyzip>, ["~> 0.9.6"])
72
+ s.add_dependency(%q<nokogiri>, ["~> 1.5.2"])
73
+ s.add_dependency(%q<rspec>, ["~> 2.9.0"])
74
+ s.add_dependency(%q<yard>, ["~> 0.7.5"])
75
+ s.add_dependency(%q<bundler>, ["~> 1.1.3"])
76
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
77
+ s.add_dependency(%q<simplecov>, [">= 0"])
78
+ s.add_dependency(%q<guard>, [">= 0"])
79
+ s.add_dependency(%q<guard-rspec>, [">= 0"])
80
+ s.add_dependency(%q<rb-fsevent>, [">= 0"])
81
+ s.add_dependency(%q<growl>, [">= 0"])
82
+ end
83
+ else
84
+ s.add_dependency(%q<rubyzip>, ["~> 0.9.6"])
85
+ s.add_dependency(%q<nokogiri>, ["~> 1.5.2"])
86
+ s.add_dependency(%q<rspec>, ["~> 2.9.0"])
87
+ s.add_dependency(%q<yard>, ["~> 0.7.5"])
88
+ s.add_dependency(%q<bundler>, ["~> 1.1.3"])
89
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
90
+ s.add_dependency(%q<simplecov>, [">= 0"])
91
+ s.add_dependency(%q<guard>, [">= 0"])
92
+ s.add_dependency(%q<guard-rspec>, [">= 0"])
93
+ s.add_dependency(%q<rb-fsevent>, [">= 0"])
94
+ s.add_dependency(%q<growl>, [">= 0"])
95
+ end
96
+ end
97
+
@@ -6,8 +6,11 @@ require 'epubinfo/models/book'
6
6
  require 'epubinfo/models/person'
7
7
  require 'epubinfo/models/date'
8
8
  require 'epubinfo/models/identifier'
9
+ require 'epubinfo/utils'
9
10
 
10
11
  module EPUBInfo
12
+ # Parses an epub file and returns a Book instance.
13
+ # @return [EPUBInfo::Models::Book] the model
11
14
  def self.get(path)
12
15
  parser = EPUBInfo::Parser.parse(path)
13
16
  end
@@ -7,17 +7,17 @@ module EPUBInfo
7
7
 
8
8
  def initialize(document)
9
9
  metadata = document.css('metadata')
10
- self.titles = metadata.xpath('.//dc:title').map(&:content)
11
- self.creators = metadata.xpath('.//dc:creator').map {|c| EPUBInfo::Models::Person.new(c) }
12
- self.subjects = metadata.xpath('.//dc:subject').map(&:content)
13
- self.description = metadata.xpath('.//dc:description').first.content rescue nil
14
- self.publisher = metadata.xpath('.//dc:publisher').first.content rescue nil
15
- self.contributors = metadata.xpath('.//dc:contributor').map {|c| EPUBInfo::Models::Person.new(c) }
16
- self.dates = metadata.xpath('.//dc:date').map { |d| EPUBInfo::Models::Date.new(d) }
17
- self.identifiers = metadata.xpath('.//dc:identifier').map { |i| EPUBInfo::Models::Identifier.new(i) }
18
- self.source = metadata.xpath('.//dc:source').first.content rescue nil
19
- self.languages = metadata.xpath('.//dc:language').map(&:content)
20
- self.rights = metadata.xpath('.//dc:rights').first.content rescue nil
10
+ self.titles = metadata.xpath('.//dc:title', EPUBInfo::Utils::DC_NAMESPACE).map(&:content)
11
+ self.creators = metadata.xpath('.//dc:creator', EPUBInfo::Utils::DC_NAMESPACE).map {|c| EPUBInfo::Models::Person.new(c) }
12
+ self.subjects = metadata.xpath('.//dc:subject', EPUBInfo::Utils::DC_NAMESPACE).map(&:content)
13
+ self.description = metadata.xpath('.//dc:description', EPUBInfo::Utils::DC_NAMESPACE).first.content rescue nil
14
+ self.publisher = metadata.xpath('.//dc:publisher', EPUBInfo::Utils::DC_NAMESPACE).first.content rescue nil
15
+ self.contributors = metadata.xpath('.//dc:contributor', EPUBInfo::Utils::DC_NAMESPACE).map {|c| EPUBInfo::Models::Person.new(c) }
16
+ self.dates = metadata.xpath('.//dc:date', EPUBInfo::Utils::DC_NAMESPACE).map { |d| EPUBInfo::Models::Date.new(d) }
17
+ self.identifiers = metadata.xpath('.//dc:identifier', EPUBInfo::Utils::DC_NAMESPACE).map { |i| EPUBInfo::Models::Identifier.new(i) }
18
+ self.source = metadata.xpath('.//dc:source', EPUBInfo::Utils::DC_NAMESPACE).first.content rescue nil
19
+ self.languages = metadata.xpath('.//dc:language', EPUBInfo::Utils::DC_NAMESPACE).map(&:content)
20
+ self.rights = metadata.xpath('.//dc:rights', EPUBInfo::Utils::DC_NAMESPACE).first.content rescue nil
21
21
  end
22
22
 
23
23
  def titles; @titles || []; end
@@ -0,0 +1,6 @@
1
+ module EPUBInfo
2
+ module Utils
3
+ DC_NAMESPACE = { 'dc' => 'http://purl.org/dc/elements/1.1/' }
4
+ end
5
+ end
6
+
@@ -1,9 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe EPUBInfo::Models::Identifier do
4
- subject { EPUBInfo::Models::Identifier.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata.opf')).css('metadata').xpath('.//dc:identifier').first) }
4
+ context 'EPUB2' do
5
+ subject { EPUBInfo::Models::Identifier.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata_epub2.opf')).css('metadata').xpath('.//dc:identifier', EPUBInfo::Utils::DC_NAMESPACE).first) }
5
6
 
6
- its(:identifier) { should == 'http://www.gutenberg.org/ebooks/5200' }
7
- its(:scheme) { should == 'URI' }
7
+ its(:identifier) { should == 'http://www.gutenberg.org/ebooks/5200' }
8
+ its(:scheme) { should == 'URI' }
9
+ end
10
+
11
+ context 'EPUB3' do
12
+ subject { EPUBInfo::Models::Identifier.new(Nokogiri::XML(File.new('spec/support/xml/wasteland_metadata_epub3.opf')).css('metadata').xpath('.//dc:identifier', EPUBInfo::Utils::DC_NAMESPACE).first) }
13
+
14
+ its(:identifier) { should == 'code.google.com.epub-samples.wasteland-basic' }
15
+ end
8
16
  end
9
17
 
@@ -1,62 +1,110 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe EPUBInfo::Models::Book do
4
- subject { EPUBInfo::Models::Book.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata.opf'))) }
5
-
6
- its(:titles) { should == ['Metamorphosis'] }
7
- its(:subjects) { should == ['Psychological fiction', 'Metamorphosis -- Fiction'] }
8
- its(:description) { should == 'Classic story of self-discovery, told in a unique manner by Kafka.' }
9
- its(:publisher) { should == 'Random House' }
10
- #its(:date) { should == '' }
11
- #its(:identifier) { should == '' }
12
- its(:source) { should == 'http://www.gutenberg.org/files/5200/5200-h/5200-h.htm' }
13
- its(:languages) { should == ['en'] }
14
- its(:rights) { should == 'Copyrighted. Read the copyright notice inside this book for details.' }
15
-
16
- context 'creators' do
17
- it 'count should be 1' do
18
- subject.creators.count.should == 1
4
+ context 'EPUB2' do
5
+ subject { EPUBInfo::Models::Book.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata_epub2.opf'))) }
6
+
7
+ its(:titles) { should == ['Metamorphosis'] }
8
+ its(:subjects) { should == ['Psychological fiction', 'Metamorphosis -- Fiction'] }
9
+ its(:description) { should == 'Classic story of self-discovery, told in a unique manner by Kafka.' }
10
+ its(:publisher) { should == 'Random House' }
11
+ its(:source) { should == 'http://www.gutenberg.org/files/5200/5200-h/5200-h.htm' }
12
+ its(:languages) { should == ['en'] }
13
+ its(:rights) { should == 'Copyrighted. Read the copyright notice inside this book for details.' }
14
+
15
+ context 'creators' do
16
+ it 'count should be 1' do
17
+ subject.creators.count.should == 1
18
+ end
19
+
20
+ it 'values should be of type Person' do
21
+ subject.creators.each do |creator|
22
+ creator.should be_kind_of EPUBInfo::Models::Person
23
+ end
24
+ end
19
25
  end
20
26
 
21
- it 'values should be of type Person' do
22
- subject.creators.each do |creator|
23
- creator.should be_kind_of EPUBInfo::Models::Person
27
+ context 'contributors' do
28
+ it 'count should be 1' do
29
+ subject.contributors.count.should == 1
30
+ end
31
+
32
+ it 'values should be of type Person' do
33
+ subject.contributors.each do |contributor|
34
+ contributor.should be_kind_of EPUBInfo::Models::Person
35
+ end
24
36
  end
25
37
  end
26
- end
27
38
 
28
- context 'contributors' do
29
- it 'count should be 1' do
30
- subject.contributors.count.should == 1
39
+ context 'dates' do
40
+ it 'count should be 1' do
41
+ subject.dates.count.should == 2
42
+ end
43
+
44
+ it 'values should be of type Date' do
45
+ subject.dates.each do |date|
46
+ date.should be_kind_of EPUBInfo::Models::Date
47
+ end
48
+ end
31
49
  end
32
50
 
33
- it 'values should be of type Person' do
34
- subject.contributors.each do |contributor|
35
- contributor.should be_kind_of EPUBInfo::Models::Person
51
+ context 'identifiers' do
52
+ it 'count should be 1' do
53
+ subject.identifiers.count.should == 1
54
+ end
55
+
56
+ it 'values should be of type Identifier' do
57
+ subject.identifiers.each do |identifier|
58
+ identifier.should be_kind_of EPUBInfo::Models::Identifier
59
+ end
36
60
  end
37
61
  end
38
62
  end
39
63
 
40
- context 'dates' do
41
- it 'count should be 1' do
42
- subject.dates.count.should == 2
64
+ context 'EPUB3' do
65
+ subject { EPUBInfo::Models::Book.new(Nokogiri::XML(File.new('spec/support/xml/wasteland_metadata_epub3.opf'))) }
66
+
67
+ its(:titles) { should == ['The Waste Land'] }
68
+ its(:subjects) { should == ['Fiction'] }
69
+ its(:description) { should == 'Each facsimile page of the original manuscript is accompanied here by a typeset transcript on the facing page' }
70
+ its(:publisher) { should == 'Some Publisher' }
71
+ its(:source) { should == 'http://code.google.com/p/epub-samples/downloads/detail?name=wasteland-20120118.epub' }
72
+ its(:languages) { should == ['en-US'] }
73
+ its(:rights) { should == 'This work is shared with the public using the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.' }
74
+
75
+ context 'creators' do
76
+ it 'count should be 1' do
77
+ subject.creators.count.should == 1
78
+ end
79
+
80
+ it 'values should be of type Person' do
81
+ subject.creators.each do |creator|
82
+ creator.should be_kind_of EPUBInfo::Models::Person
83
+ end
84
+ end
43
85
  end
44
86
 
45
- it 'values should be of type Date' do
46
- subject.dates.each do |date|
47
- date.should be_kind_of EPUBInfo::Models::Date
87
+ context 'contributors' do
88
+ it 'count should be 0' do
89
+ subject.contributors.count.should == 0
48
90
  end
49
91
  end
50
- end
51
92
 
52
- context 'identifiers' do
53
- it 'count should be 1' do
54
- subject.identifiers.count.should == 1
93
+ context 'dates' do
94
+ it 'count should be 1' do
95
+ subject.dates.count.should == 1
96
+ end
55
97
  end
56
98
 
57
- it 'values should be of type Identifier' do
58
- subject.identifiers.each do |identifier|
59
- identifier.should be_kind_of EPUBInfo::Models::Identifier
99
+ context 'identifiers' do
100
+ it 'count should be 1' do
101
+ subject.identifiers.count.should == 1
102
+ end
103
+
104
+ it 'values should be of type Identifier' do
105
+ subject.identifiers.each do |identifier|
106
+ identifier.should be_kind_of EPUBInfo::Models::Identifier
107
+ end
60
108
  end
61
109
  end
62
110
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe EPUBInfo::Models::Date do
4
- subject { EPUBInfo::Models::Date.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata.opf')).css('metadata').xpath('.//dc:date').first) }
4
+ subject { EPUBInfo::Models::Date.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata_epub2.opf')).css('metadata').xpath('.//dc:date').first) }
5
5
 
6
6
  its(:time) { should == Time.parse('2005-08-17') }
7
7
  its(:event) { should == 'publication' }
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe EPUBInfo::Models::Person do
4
4
  context 'creator' do
5
- subject { EPUBInfo::Models::Person.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata.opf')).css('metadata').xpath('.//dc:creator').first) }
5
+ subject { EPUBInfo::Models::Person.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata_epub2.opf')).css('metadata').xpath('.//dc:creator').first) }
6
6
 
7
7
  its(:name) { should == 'Franz Kafka' }
8
8
  its(:file_as) { should == 'Kafka, Franz' }
@@ -10,7 +10,7 @@ describe EPUBInfo::Models::Person do
10
10
  end
11
11
 
12
12
  context 'contributor' do
13
- subject { EPUBInfo::Models::Person.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata.opf')).css('metadata').xpath('.//dc:contributor').first) }
13
+ subject { EPUBInfo::Models::Person.new(Nokogiri::XML(File.new('spec/support/xml/metamorphosis_metadata_epub2.opf')).css('metadata').xpath('.//dc:contributor').first) }
14
14
 
15
15
  its(:name) { should == 'David Wyllie' }
16
16
  its(:file_as) { should == 'Wyllie, David' }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe EPUBInfo::Parser do
4
- let(:epub_path) { File.expand_path('spec/support/binary/metamorphosis.epub') }
4
+ let(:epub_path) { File.expand_path('spec/support/binary/metamorphosis_epub2.epub') }
5
5
  let(:parser) { EPUBInfo::Parser.parse(epub_path) }
6
6
 
7
7
  describe '#parse' do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe EPUBInfo do
4
- let(:epub_path) { File.expand_path('spec/support/binary/metamorphosis.epub') }
4
+ let(:epub_path) { File.expand_path('spec/support/binary/metamorphosis_epub2.epub') }
5
5
 
6
6
  describe '#get' do
7
7
  it 'calls parser' do
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <package xmlns="http://www.idpf.org/2007/opf" version="3.0" unique-identifier="uid" xml:lang="en-US" prefix="cc: http://creativecommons.org/ns#">
3
+ <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
4
+ <dc:identifier id="uid">code.google.com.epub-samples.wasteland-basic</dc:identifier>
5
+ <dc:title>The Waste Land</dc:title>
6
+ <dc:creator>T.S. Eliot</dc:creator>
7
+ <dc:language>en-US</dc:language>
8
+ <dc:date>2011-09-01</dc:date>
9
+ <dc:subject>Fiction</dc:subject>
10
+ <dc:description>Each facsimile page of the original manuscript is accompanied here by a typeset transcript on the facing page</dc:description>
11
+ <dc:publisher>Some Publisher</dc:publisher>
12
+ <dc:source>http://code.google.com/p/epub-samples/downloads/detail?name=wasteland-20120118.epub</dc:source>
13
+ <meta property="dcterms:modified">2012-01-18T12:47:00Z</meta>
14
+ <!-- rights expressions for the work as a whole -->
15
+ <dc:rights>This work is shared with the public using the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.</dc:rights>
16
+ <link rel="cc:license" href="http://creativecommons.org/licenses/by-sa/3.0/"/>
17
+ <meta property="cc:attributionURL">http://code.google.com/p/epub-samples/</meta>
18
+ <!-- rights expression for the cover image -->
19
+ <link rel="cc:license" refines="#cover" href="http://creativecommons.org/licenses/by-sa/3.0/" />
20
+ <link rel="cc:attributionURL" refines="#cover" href="http://en.wikipedia.org/wiki/Simon_Fieldhouse" />
21
+ <!-- cover meta element included for 2.0 reading system compatibility: -->
22
+ <meta name="cover" content="cover"/>
23
+ </metadata>
24
+ <manifest>
25
+ <item id="t1" href="wasteland-content.xhtml" media-type="application/xhtml+xml" />
26
+ <item id="nav" href="wasteland-nav.xhtml" properties="nav" media-type="application/xhtml+xml" />
27
+ <item id="cover" href="wasteland-cover.jpg" media-type="image/jpeg" properties="cover-image" />
28
+ <item id="css" href="wasteland.css" media-type="text/css" />
29
+ <item id="css-night" href="wasteland-night.css" media-type="text/css" />
30
+ <!-- ncx included for 2.0 reading system compatibility: -->
31
+ <item id="ncx" href="wasteland.ncx" media-type="application/x-dtbncx+xml" />
32
+ </manifest>
33
+ <spine toc="ncx">
34
+ <itemref idref="t1" />
35
+ </spine>
36
+ </package>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epubinfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-31 00:00:00.000000000 Z
12
+ date: 2012-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip
16
- requirement: &70274465012500 !ruby/object:Gem::Requirement
16
+ requirement: &70111953893280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.9.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70274465012500
24
+ version_requirements: *70111953893280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &70274465030960 !ruby/object:Gem::Requirement
27
+ requirement: &70111953891860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.5.2
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70274465030960
35
+ version_requirements: *70111953891860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70274465029360 !ruby/object:Gem::Requirement
38
+ requirement: &70111953890520 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.9.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70274465029360
46
+ version_requirements: *70111953890520
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &70274465028080 !ruby/object:Gem::Requirement
49
+ requirement: &70111953889200 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.7.5
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70274465028080
57
+ version_requirements: *70111953889200
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &70274465026880 !ruby/object:Gem::Requirement
60
+ requirement: &70111953903960 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.1.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70274465026880
68
+ version_requirements: *70111953903960
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &70274465024980 !ruby/object:Gem::Requirement
71
+ requirement: &70111953903160 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.8.3
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70274465024980
79
+ version_requirements: *70111953903160
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: simplecov
82
- requirement: &70274465045040 !ruby/object:Gem::Requirement
82
+ requirement: &70111953901360 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70274465045040
90
+ version_requirements: *70111953901360
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: guard
93
- requirement: &70274465039520 !ruby/object:Gem::Requirement
93
+ requirement: &70111953900620 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70274465039520
101
+ version_requirements: *70111953900620
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: guard-rspec
104
- requirement: &70274465068660 !ruby/object:Gem::Requirement
104
+ requirement: &70111953899380 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70274465068660
112
+ version_requirements: *70111953899380
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rb-fsevent
115
- requirement: &70274464763340 !ruby/object:Gem::Requirement
115
+ requirement: &70111953898540 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70274464763340
123
+ version_requirements: *70111953898540
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: growl
126
- requirement: &70274464762020 !ruby/object:Gem::Requirement
126
+ requirement: &70111953897380 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70274464762020
134
+ version_requirements: *70111953897380
135
135
  description: Currently only supports EPUB 3 specification.
136
136
  email: christof@chdorner.com
137
137
  executables: []
@@ -149,12 +149,14 @@ files:
149
149
  - README.rdoc
150
150
  - Rakefile
151
151
  - VERSION
152
+ - epubinfo.gemspec
152
153
  - lib/epubinfo.rb
153
154
  - lib/epubinfo/models/book.rb
154
155
  - lib/epubinfo/models/date.rb
155
156
  - lib/epubinfo/models/identifier.rb
156
157
  - lib/epubinfo/models/person.rb
157
158
  - lib/epubinfo/parser.rb
159
+ - lib/epubinfo/utils.rb
158
160
  - spec/lib/epubinfo/identifier_spec.rb
159
161
  - spec/lib/epubinfo/models/book_spec.rb
160
162
  - spec/lib/epubinfo/models/date_spec.rb
@@ -162,8 +164,10 @@ files:
162
164
  - spec/lib/epubinfo/parser_spec.rb
163
165
  - spec/lib/epubinfo_spec.rb
164
166
  - spec/spec_helper.rb
165
- - spec/support/binary/metamorphosis.epub
166
- - spec/support/xml/metamorphosis_metadata.opf
167
+ - spec/support/binary/metamorphosis_epub2.epub
168
+ - spec/support/binary/wasteland_epub3.epub
169
+ - spec/support/xml/metamorphosis_metadata_epub2.opf
170
+ - spec/support/xml/wasteland_metadata_epub3.opf
167
171
  homepage: http://github.com/chdorner/epubinfo
168
172
  licenses:
169
173
  - MIT
@@ -179,7 +183,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
183
  version: '0'
180
184
  segments:
181
185
  - 0
182
- hash: -2575659408335864177
186
+ hash: -147532084777726718
183
187
  required_rubygems_version: !ruby/object:Gem::Requirement
184
188
  none: false
185
189
  requirements: