epub-parser 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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