epub-parser 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,24 +10,24 @@ USAGE
10
10
 
11
11
  ### As a command line tool
12
12
 
13
- epubinfo path/to/book.epub
13
+ epubinfo path/to/book.epub
14
14
 
15
15
  For more info:
16
16
 
17
- epubinfo -h
17
+ epubinfo -h
18
18
 
19
19
  ### As a library
20
20
 
21
21
  require 'epub/parser'
22
22
 
23
- book = EPUB::Parser.parse 'book.epub', 'working/directory'
23
+ book = EPUB::Parser.parse 'book.epub'
24
24
  book.each_page_on_spine do |page|
25
25
  # do somethong...
26
26
  end
27
27
 
28
28
  See the [wiki][] for more info.
29
29
 
30
- [wiki]:https://gitorious.org/epub/pages/EpubParser
30
+ [wiki]:https://github.com/KitaitiMakoto/epub-parser/wiki
31
31
 
32
32
  REQUIREMENTS
33
33
  ------------
@@ -37,12 +37,15 @@ REQUIREMENTS
37
37
  TODOS
38
38
  -----
39
39
  * Adding tests
40
- * Implementing metadata/link, navigation document and so on
41
- * Using zip library instead of `unzip` command, which has security issue
40
+ * Implementing navigation document and so on
42
41
  * Using SAX on parsing
43
42
  * Extracting and organizing common behavior from some classes to modules
44
43
  * Abstraction of XML parser(making it possible to use REXML, standard bundled XML library of Ruby)
45
44
 
45
+ DONE
46
+ ----
47
+ * Using zip library instead of `unzip` command, which has security issue
48
+
46
49
  LICENSE
47
50
  -------
48
51
  This library is distribuetd under the term of the MIT License.
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
3
  require 'yard'
4
+ require 'cucumber'
5
+ require 'cucumber/rake/task'
4
6
 
5
7
  task :default => :test
6
8
 
@@ -11,6 +13,8 @@ end
11
13
 
12
14
  YARD::Rake::YardocTask.new
13
15
 
16
+ Cucumber::Rake::Task.new
17
+
14
18
  namespace :sample do
15
19
  desc 'Build the test fixture EPUB'
16
20
  task :build do
@@ -1,9 +1,6 @@
1
- require 'tmpdir'
2
1
  require 'optparse'
3
2
  require 'epub/parser'
4
3
 
5
- Version = EPUB::Parser::VERSION
6
-
7
4
  options = {:format => :line}
8
5
  opt = OptionParser.new do |opt|
9
6
  opt.banner = <<EOB
@@ -12,6 +9,7 @@ Show metadata of an EPUB file
12
9
  Usage: epubinfo [options] EPUBFILE
13
10
 
14
11
  EOB
12
+ opt.version = EPUB::Parser::VERSION
15
13
  opt.on '-f', '--format=FORMAT', [:line, :json, :yaml], 'format of output(line, json or yaml), defaults to line(for console)' do |format|
16
14
  options[:format] = format
17
15
  end
@@ -22,22 +20,20 @@ file = ARGV.shift
22
20
  unless file
23
21
  $stdout.puts "error: you must supply an EPUB file name"
24
22
  $stdout.puts opt.help
25
- exit!
23
+ abort
26
24
  end
27
25
 
28
- Dir.mktmpdir('epub-parser') do |dir|
29
- book = EPUB::Parser.parse file, dir
30
- data = {'Title' => [book.title]}
31
- data.merge!(book.package.metadata.to_hash)
32
- data['Unique identifier'] = [book.package.metadata.unique_identifier]
33
- data['EPUB Version'] = [book.package.version]
34
- if options[:format] == :line
35
- key_width = data.keys.map {|k| k.length}.max + 3
36
- data.each_pair do |k, v|
37
- puts (k.to_s.capitalize + ':').ljust(key_width) + v.join(', ')
38
- end
39
- else
40
- require options[:format].to_s
41
- puts data.__send__("to_#{options[:format]}")
26
+ book = EPUB::Parser.parse file
27
+ data = {'Title' => [book.title]}
28
+ data.merge!(book.package.metadata.to_hash)
29
+ data['Unique identifier'] = [book.package.metadata.unique_identifier]
30
+ data['EPUB Version'] = [book.package.version]
31
+ if options[:format] == :line
32
+ key_width = data.keys.map {|k| k.length}.max + 3
33
+ data.each_pair do |k, v|
34
+ puts (k.to_s.capitalize + ':').ljust(key_width) + v.join(', ')
42
35
  end
36
+ else
37
+ require options[:format].to_s
38
+ puts data.__send__("to_#{options[:format]}")
43
39
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = EPUB::Parser::VERSION
8
8
  s.authors = ["KITAITI Makoto"]
9
9
  s.email = ["KitaitiMakoto@gmail.com"]
10
- s.homepage = "https://gitorious.org/epub/parser"
10
+ s.homepage = "https://github.com/KitaitiMakoto/epub-parser"
11
11
  s.summary = %q{EPUB 3 Parser}
12
12
  s.description = %q{Parse EPUB 3 book loosely}
13
13
  s.license = 'MIT'
@@ -19,12 +19,14 @@ Gem::Specification.new do |s|
19
19
  s.test_files = `git ls-files -- {test,spec,features}/**/*.rb`.split("\n")
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
+ s.has_rdoc = 'yard'
22
23
 
23
24
  s.add_development_dependency 'rubygems-test'
24
25
  s.add_development_dependency 'rake'
25
26
  s.add_development_dependency 'pry'
26
27
  s.add_development_dependency 'pry-doc'
27
- s.add_development_dependency 'test-unit', '~> 2'
28
+ s.add_development_dependency 'pry-nav'
29
+ s.add_development_dependency 'test-unit-full'
28
30
  s.add_development_dependency 'simplecov'
29
31
  s.add_development_dependency 'thin'
30
32
  s.add_development_dependency 'yard'
@@ -34,7 +36,7 @@ Gem::Specification.new do |s|
34
36
  s.add_development_dependency 'epubcheck'
35
37
  s.add_development_dependency 'epub_validator'
36
38
  s.add_development_dependency 'zipruby'
37
- s.add_development_dependency 'rubyzip'
39
+ s.add_development_dependency 'aruba'
38
40
 
39
41
  s.add_runtime_dependency 'enumerabler'
40
42
  s.add_runtime_dependency 'nokogiri'
@@ -6,6 +6,7 @@ require 'epub/parser'
6
6
  module EPUB
7
7
  modules = [ :ocf, :package, :content_document ]
8
8
  attr_reader *modules
9
+ attr_reader :epub_file
9
10
  modules.each do |mod|
10
11
  define_method "#{mod}=" do |obj|
11
12
  instance_variable_set "@#{mod}", obj
@@ -14,6 +15,7 @@ module EPUB
14
15
  end
15
16
 
16
17
  def parse(file, dir, options = {})
18
+ @epub_file = file
17
19
  options = options.merge({:book => self})
18
20
  Parser.parse(file, dir, options)
19
21
  end
@@ -3,53 +3,35 @@ require 'epub/parser/version'
3
3
  require 'epub/parser/ocf'
4
4
  require 'epub/parser/publication'
5
5
  require 'epub/parser/content_document'
6
- require 'shellwords'
6
+ require 'zipruby'
7
7
  require 'nokogiri'
8
8
 
9
9
  module EPUB
10
10
  class Parser
11
11
  class << self
12
- def parse(file, dir, options = {})
13
- new(file, dir, options).parse
12
+ def parse(file, options = {})
13
+ new(file, options).parse
14
14
  end
15
15
  end
16
16
 
17
- def initialize(filepath, root_directory, options = {})
17
+ def initialize(filepath, options = {})
18
18
  raise "File #{filepath} not readable" unless File.readable_real? filepath
19
- raise "File #{root_directory} already exists" if File.file? root_directory
20
-
21
- @filepath = File.realpath filepath
22
- Dir.mkdir(root_directory) unless File.directory? root_directory
23
- @dir = File.realpath root_directory
24
19
 
20
+ @filepath = File.realpath filepath
25
21
  @book = create_book options
26
-
27
- unzip_cmd = options['unzip-command'] || 'unzip'
28
- unzip_cmd << " #{@filepath.to_s.shellescape} -d #{@dir.to_s.shellescape} 1>/dev/null"
29
- system unzip_cmd
30
22
  end
31
23
 
32
24
  def parse
33
- @book.ocf = parse_ocf
34
- @book.package = parse_publication
35
- # @book.content_document =??? parse_content_document
36
- # ...
25
+ Zip::Archive.open @filepath do |zip|
26
+ @book.ocf = OCF.parse(zip)
27
+ @book.package = Publication.parse(zip, @book.rootfile_path)
28
+ # @book.content_document =??? parse_content_document
29
+ # ...
30
+ end
37
31
 
38
32
  @book
39
33
  end
40
34
 
41
- def parse_ocf
42
- OCF.parse @dir
43
- end
44
-
45
- def parse_publication
46
- Publication.parse File.join(@dir, @book.rootfile_path)
47
- end
48
-
49
- def parse_content_document
50
- # ContentDocument.parse @dir
51
- end
52
-
53
35
  private
54
36
 
55
37
  def create_book(params)
@@ -35,9 +35,7 @@ module EPUB
35
35
  # And if so, where should the namespaces be defined?
36
36
  # nav.type = element['epub:type']
37
37
  element.namespaces['epub'] = "http://www.idpf.org/2007/ops"
38
- p element.namespaces
39
38
  nav.type = element['epub:type']
40
- p nav.type
41
39
 
42
40
  nav
43
41
  end
@@ -1,5 +1,6 @@
1
1
  require 'epub/constants'
2
2
  require 'epub/ocf'
3
+ require 'zipruby'
3
4
  require 'nokogiri'
4
5
 
5
6
  module EPUB
@@ -9,13 +10,13 @@ module EPUB
9
10
  EPUB::OCF::MODULES.each {|m| self.const_set "#{m.upcase}_FILE", "#{m}.xml"}
10
11
 
11
12
  class << self
12
- def parse(root_directory)
13
- new(root_directory).parse
13
+ def parse(zip_archive)
14
+ new(zip_archive).parse
14
15
  end
15
16
  end
16
17
 
17
- def initialize(root_directory)
18
- @dir = root_directory
18
+ def initialize(zip_archive)
19
+ @zip = zip_archive
19
20
  @ocf = EPUB::OCF.new
20
21
  end
21
22
 
@@ -28,8 +29,8 @@ module EPUB
28
29
 
29
30
  def parse_container
30
31
  container = EPUB::OCF::Container.new
31
- doc = Nokogiri.XML open(File.join @dir, DIRECTORY, CONTAINER_FILE)
32
-
32
+ entry = @zip.fopen(File.join(DIRECTORY, CONTAINER_FILE))
33
+ doc = Nokogiri.XML(entry.read)
33
34
  doc.xpath('/ocf:container/ocf:rootfiles/ocf:rootfile', EPUB::NAMESPACES).each do |elem|
34
35
  rootfile = EPUB::OCF::Container::Rootfile.new
35
36
  %w[full-path media-type].each do |attr|
@@ -1,3 +1,4 @@
1
+ require 'zipruby'
1
2
  require 'nokogiri'
2
3
  require 'addressable/uri'
3
4
  require 'epub/publication'
@@ -7,15 +8,16 @@ module EPUB
7
8
  class Parser
8
9
  class Publication
9
10
  class << self
10
- def parse(file)
11
- new(file).parse
11
+ def parse(zip_archive, file)
12
+ new(zip_archive, file).parse
12
13
  end
13
14
  end
14
15
 
15
- def initialize(file)
16
+ def initialize(zip_archive, file)
16
17
  @package = EPUB::Publication::Package.new
17
- @rootfile = Addressable::URI.parse File.realpath(file)
18
- @doc = Nokogiri.XML open(file)
18
+ @rootfile = Addressable::URI.parse(file)
19
+ entry = zip_archive.fopen(file)
20
+ @doc = Nokogiri.XML(entry.read)
19
21
  end
20
22
 
21
23
  def parse
@@ -1,5 +1,5 @@
1
1
  module EPUB
2
2
  class Parser
3
- VERSION = "0.0.8"
3
+ VERSION = "0.0.9"
4
4
  end
5
5
  end
@@ -47,7 +47,9 @@ module EPUB
47
47
  end
48
48
 
49
49
  def read
50
- open(iri) {|file| file.read}
50
+ Zip::Archive.open(manifest.package.book.epub_file) {|zip|
51
+ zip.fopen(iri.to_s).read
52
+ }
51
53
  end
52
54
 
53
55
  # To do: Handle circular fallback chain
@@ -5,3 +5,4 @@ end
5
5
 
6
6
  gem 'test-unit'
7
7
  require 'test/unit'
8
+ require 'test/unit/rr'
@@ -1,16 +1,10 @@
1
1
  require File.expand_path 'helper', File.dirname(__FILE__)
2
2
  require 'epub/parser'
3
3
  require 'fileutils'
4
- require 'tmpdir'
5
4
 
6
5
  class TestParser < Test::Unit::TestCase
7
6
  def setup
8
- @rootdir = Dir.mktmpdir 'epub-parser'
9
- @parser = EPUB::Parser.new 'test/fixtures/book.epub', @rootdir
10
- end
11
-
12
- def teardown
13
- FileUtils.remove_entry_secure @rootdir
7
+ @parser = EPUB::Parser.new 'test/fixtures/book.epub'
14
8
  end
15
9
 
16
10
  def test_parse
@@ -15,4 +15,3 @@ class TestParserContentDocument < Test::Unit::TestCase
15
15
  assert_equal 'Table of Contents', navs.first.heading
16
16
  end
17
17
  end
18
-
@@ -4,7 +4,13 @@ require 'epub/parser/ocf'
4
4
 
5
5
  class TestParserOCF < Test::Unit::TestCase
6
6
  def setup
7
- @parser = EPUB::Parser::OCF.new 'test/fixtures/book'
7
+ file = 'test/fixtures/book.epub'
8
+ @zip = Zip::Archive.open(file)
9
+ @parser = EPUB::Parser::OCF.new(@zip)
10
+ end
11
+
12
+ def teardown
13
+ @zip.close
8
14
  end
9
15
 
10
16
  def test_parsed_container_has_one_rootfile
@@ -4,10 +4,17 @@ require 'epub/parser/publication'
4
4
 
5
5
  class TestParserPublication < Test::Unit::TestCase
6
6
  def setup
7
- @parser = EPUB::Parser::Publication.new 'test/fixtures/book/OPS/ルートファイル.opf'
7
+ file = 'test/fixtures/book.epub'
8
+ root_file = 'OPS/ルートファイル.opf'
9
+ @zip = Zip::Archive.open(file)
10
+ @parser = EPUB::Parser::Publication.new(@zip, root_file)
8
11
  @package = @parser.parse_package
9
12
  end
10
13
 
14
+ def teardown
15
+ @zip.close
16
+ end
17
+
11
18
  def test_parse_package
12
19
  assert_equal '3.0', @package.version
13
20
  end
@@ -41,10 +48,8 @@ class TestParserPublication < Test::Unit::TestCase
41
48
  assert_equal 8, @manifest.items.length
42
49
  end
43
50
 
44
- def test_item_has_full_path_as_iri_attribute
45
- actual = File.expand_path 'fixtures/book/OPS/nav.xhtml', File.dirname(__FILE__)
46
-
47
- assert_equal actual, @manifest['nav'].iri.to_s
51
+ def test_item_has_relative_path_as_iri_attribute
52
+ assert_equal 'OPS/nav.xhtml', @manifest['nav'].iri.to_s
48
53
  end
49
54
 
50
55
  def test_fallback_attribute_of_item_should_be_item_object
@@ -55,6 +60,10 @@ class TestParserPublication < Test::Unit::TestCase
55
60
  end
56
61
 
57
62
  def test_item_is_readable
63
+ book = Object.new
64
+ mock(@package).book {book}
65
+ mock(book).epub_file {'test/fixtures/book.epub'}
66
+
58
67
  item = @manifest.items.first
59
68
  doc = Nokogiri.XML item.read
60
69
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epub-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
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-11 00:00:00.000000000Z
12
+ date: 2012-08-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubygems-test
16
- requirement: &11201540 !ruby/object:Gem::Requirement
16
+ requirement: &7153000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *11201540
24
+ version_requirements: *7153000
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &11189400 !ruby/object:Gem::Requirement
27
+ requirement: &7150920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *11189400
35
+ version_requirements: *7150920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: pry
38
- requirement: &11186320 !ruby/object:Gem::Requirement
38
+ requirement: &7149860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *11186320
46
+ version_requirements: *7149860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pry-doc
49
- requirement: &11185640 !ruby/object:Gem::Requirement
49
+ requirement: &7148720 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,21 +54,32 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *11185640
57
+ version_requirements: *7148720
58
58
  - !ruby/object:Gem::Dependency
59
- name: test-unit
60
- requirement: &11184560 !ruby/object:Gem::Requirement
59
+ name: pry-nav
60
+ requirement: &7166500 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
- - - ~>
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *7166500
69
+ - !ruby/object:Gem::Dependency
70
+ name: test-unit-full
71
+ requirement: &7165380 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
64
75
  - !ruby/object:Gem::Version
65
- version: '2'
76
+ version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *11184560
79
+ version_requirements: *7165380
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: simplecov
71
- requirement: &11183620 !ruby/object:Gem::Requirement
82
+ requirement: &7163980 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: '0'
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *11183620
90
+ version_requirements: *7163980
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: thin
82
- requirement: &11182540 !ruby/object:Gem::Requirement
93
+ requirement: &7162800 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,10 +98,10 @@ dependencies:
87
98
  version: '0'
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *11182540
101
+ version_requirements: *7162800
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: yard
93
- requirement: &11181840 !ruby/object:Gem::Requirement
104
+ requirement: &7162000 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ! '>='
@@ -98,10 +109,10 @@ dependencies:
98
109
  version: '0'
99
110
  type: :development
100
111
  prerelease: false
101
- version_requirements: *11181840
112
+ version_requirements: *7162000
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: gem-man
104
- requirement: &11122520 !ruby/object:Gem::Requirement
115
+ requirement: &7161220 !ruby/object:Gem::Requirement
105
116
  none: false
106
117
  requirements:
107
118
  - - ! '>='
@@ -109,10 +120,10 @@ dependencies:
109
120
  version: '0'
110
121
  type: :development
111
122
  prerelease: false
112
- version_requirements: *11122520
123
+ version_requirements: *7161220
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: ronn
115
- requirement: &11120840 !ruby/object:Gem::Requirement
126
+ requirement: &7160400 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ! '>='
@@ -120,10 +131,10 @@ dependencies:
120
131
  version: '0'
121
132
  type: :development
122
133
  prerelease: false
123
- version_requirements: *11120840
134
+ version_requirements: *7160400
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: epzip
126
- requirement: &11119120 !ruby/object:Gem::Requirement
137
+ requirement: &7159780 !ruby/object:Gem::Requirement
127
138
  none: false
128
139
  requirements:
129
140
  - - ! '>='
@@ -131,10 +142,10 @@ dependencies:
131
142
  version: '0'
132
143
  type: :development
133
144
  prerelease: false
134
- version_requirements: *11119120
145
+ version_requirements: *7159780
135
146
  - !ruby/object:Gem::Dependency
136
147
  name: epubcheck
137
- requirement: &12151080 !ruby/object:Gem::Requirement
148
+ requirement: &7159180 !ruby/object:Gem::Requirement
138
149
  none: false
139
150
  requirements:
140
151
  - - ! '>='
@@ -142,10 +153,10 @@ dependencies:
142
153
  version: '0'
143
154
  type: :development
144
155
  prerelease: false
145
- version_requirements: *12151080
156
+ version_requirements: *7159180
146
157
  - !ruby/object:Gem::Dependency
147
158
  name: epub_validator
148
- requirement: &12148200 !ruby/object:Gem::Requirement
159
+ requirement: &7177540 !ruby/object:Gem::Requirement
149
160
  none: false
150
161
  requirements:
151
162
  - - ! '>='
@@ -153,10 +164,10 @@ dependencies:
153
164
  version: '0'
154
165
  type: :development
155
166
  prerelease: false
156
- version_requirements: *12148200
167
+ version_requirements: *7177540
157
168
  - !ruby/object:Gem::Dependency
158
169
  name: zipruby
159
- requirement: &11234320 !ruby/object:Gem::Requirement
170
+ requirement: &7176860 !ruby/object:Gem::Requirement
160
171
  none: false
161
172
  requirements:
162
173
  - - ! '>='
@@ -164,10 +175,10 @@ dependencies:
164
175
  version: '0'
165
176
  type: :development
166
177
  prerelease: false
167
- version_requirements: *11234320
178
+ version_requirements: *7176860
168
179
  - !ruby/object:Gem::Dependency
169
- name: rubyzip
170
- requirement: &11232240 !ruby/object:Gem::Requirement
180
+ name: aruba
181
+ requirement: &7176200 !ruby/object:Gem::Requirement
171
182
  none: false
172
183
  requirements:
173
184
  - - ! '>='
@@ -175,10 +186,10 @@ dependencies:
175
186
  version: '0'
176
187
  type: :development
177
188
  prerelease: false
178
- version_requirements: *11232240
189
+ version_requirements: *7176200
179
190
  - !ruby/object:Gem::Dependency
180
191
  name: enumerabler
181
- requirement: &11227260 !ruby/object:Gem::Requirement
192
+ requirement: &7175580 !ruby/object:Gem::Requirement
182
193
  none: false
183
194
  requirements:
184
195
  - - ! '>='
@@ -186,10 +197,10 @@ dependencies:
186
197
  version: '0'
187
198
  type: :runtime
188
199
  prerelease: false
189
- version_requirements: *11227260
200
+ version_requirements: *7175580
190
201
  - !ruby/object:Gem::Dependency
191
202
  name: nokogiri
192
- requirement: &11365900 !ruby/object:Gem::Requirement
203
+ requirement: &7174900 !ruby/object:Gem::Requirement
193
204
  none: false
194
205
  requirements:
195
206
  - - ! '>='
@@ -197,10 +208,10 @@ dependencies:
197
208
  version: '0'
198
209
  type: :runtime
199
210
  prerelease: false
200
- version_requirements: *11365900
211
+ version_requirements: *7174900
201
212
  - !ruby/object:Gem::Dependency
202
213
  name: addressable
203
- requirement: &11363620 !ruby/object:Gem::Requirement
214
+ requirement: &7174140 !ruby/object:Gem::Requirement
204
215
  none: false
205
216
  requirements:
206
217
  - - ! '>='
@@ -208,7 +219,7 @@ dependencies:
208
219
  version: '0'
209
220
  type: :runtime
210
221
  prerelease: false
211
- version_requirements: *11363620
222
+ version_requirements: *7174140
212
223
  description: Parse EPUB 3 book loosely
213
224
  email:
214
225
  - KitaitiMakoto@gmail.com
@@ -264,7 +275,7 @@ files:
264
275
  - test/test_parser_ocf.rb
265
276
  - test/test_parser_publication.rb
266
277
  - test/fixtures/book/OPS/ルートファイル.opf
267
- homepage: https://gitorious.org/epub/parser
278
+ homepage: https://github.com/KitaitiMakoto/epub-parser
268
279
  licenses:
269
280
  - MIT
270
281
  post_install_message:
@@ -279,7 +290,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
279
290
  version: '0'
280
291
  segments:
281
292
  - 0
282
- hash: -1773548056502971517
293
+ hash: 3117642784575544251
283
294
  required_rubygems_version: !ruby/object:Gem::Requirement
284
295
  none: false
285
296
  requirements:
@@ -288,7 +299,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
299
  version: '0'
289
300
  segments:
290
301
  - 0
291
- hash: -1773548056502971517
302
+ hash: 3117642784575544251
292
303
  requirements: []
293
304
  rubyforge_project:
294
305
  rubygems_version: 1.8.8
@@ -296,4 +307,4 @@ signing_key:
296
307
  specification_version: 3
297
308
  summary: EPUB 3 Parser
298
309
  test_files: []
299
- has_rdoc:
310
+ has_rdoc: yard