gutenberg_rdf 0.0.2 → 0.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bbef70a3ac7d39b2bb3c3e0945ba6d722ffa1d2b
4
- data.tar.gz: 98cd1b9df8ad4ff1507cea7a2ade4686aee9302b
3
+ metadata.gz: cde8f277e56fe12183ccc5386414bb2161d8fed3
4
+ data.tar.gz: c5ece359a2fa5e80addb608e5441440e9a46f2cb
5
5
  SHA512:
6
- metadata.gz: 0a2174ab980a295ec48ee2f8791b8bb8d12de541f8159d257f9e2e2ff57d0ad373e60ce40188e9a4007d5be0a54a98e3631532dee07820b609222112382b77e5
7
- data.tar.gz: 2ee305ee3749ba4cfa6239af9acc49e6eea65f4d8ab461eccab474bc4bbdf47df433791b7b398b0a60eaac132255aa3f85123bca3a5e3f3814fa2881d0288deb
6
+ metadata.gz: 92fe622ad63fac10e422b6f4597d14d0fd7e933d8efbe82c68f8f103fe4112a529746eceaadcbe3457432fd9bb298c95018284292b9727d9a0ea0cd06c5ca314
7
+ data.tar.gz: 45324adf7e17df7e5faeaf1b2b599d8d73bd056d8e3ee82205950e6e1409db114d838c8fb6ef11eba9df1330d0d08a5364e2467ab07095cca50765a2bbd505f0
data/README.md CHANGED
@@ -6,7 +6,6 @@ providing a nice API to all the metadata contained within.
6
6
  ## Requirements
7
7
 
8
8
  * Ruby 2.0 - this is so we get UTF-8 by default
9
- * Nokogiri - for parsing the RDF
10
9
 
11
10
 
12
11
  ## Installation
@@ -27,8 +26,7 @@ Or install it yourself as:
27
26
 
28
27
  require 'gutenberg_rdf'
29
28
 
30
- xml = Nokogiri::XML(File.new('/path/to/pg2746.rdf'))
31
- book = GutenbergRdf::Rdf.new(xml)
29
+ book = GutenbergRdf.parse('/path/to/pg2746.rdf')
32
30
 
33
31
  puts book.id
34
32
  #=> "2746"
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Mike Cook"]
9
9
  spec.email = ["m@mikecook.co.uk"]
10
10
  spec.summary = %q{A Ruby wrapper for the Project Gutenberg RDF catalog files.}
11
- spec.description = %q{A Ruby wrapper providing a nice API for the Project Gutenberg RDF catalog files. See the README for more information.}
11
+ spec.description = %q{A Ruby wrapper for the Project Gutenberg RDF catalog files (requires Ruby 2).}
12
12
  spec.homepage = ""
13
13
  spec.license = "MIT"
14
14
 
@@ -19,10 +19,5 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.required_ruby_version = ">= 2.0.0" # so we have UTF-8 by default
21
21
 
22
- spec.add_dependency "nokogiri", "~> 1.6.0"
23
-
24
- spec.add_development_dependency "bundler", "~> 1.3"
25
- spec.add_development_dependency "rake"
26
-
27
22
  spec.add_development_dependency "rspec", "~> 2.14.1"
28
23
  end
@@ -8,7 +8,7 @@ module GutenbergRdf
8
8
  end
9
9
 
10
10
  def id
11
- xml.at_xpath('pgterms:agent').attribute('about').content.match(/\A\d\d\d\d\/agents\/(\d+)\z/)[1]
11
+ xml.elements['pgterms:agent'].attributes['about'].match(/\A\d\d\d\d\/agents\/(\d+)\z/)[1]
12
12
  end
13
13
 
14
14
  def fullname
@@ -24,20 +24,20 @@ module GutenbergRdf
24
24
  end
25
25
 
26
26
  def birthdate
27
- xml.at_xpath('pgterms:agent/pgterms:birthdate').text
27
+ xml.elements['pgterms:agent/pgterms:birthdate'].text
28
28
  end
29
29
 
30
30
  def deathdate
31
- xml.at_xpath('pgterms:agent/pgterms:deathdate').text
31
+ xml.elements['pgterms:agent/pgterms:deathdate'].text
32
32
  end
33
33
 
34
34
  def webpage
35
- xml.at_xpath('pgterms:agent/pgterms:webpage').attribute('resource').content
35
+ xml.elements['pgterms:agent/pgterms:webpage'].attributes['resource']
36
36
  end
37
37
 
38
38
  def aliases
39
39
  entries = Array.new
40
- xml.xpath('//pgterms:alias').each do |name|
40
+ xml.elements.each('pgterms:agent/pgterms:alias') do |name|
41
41
  entries << name.text
42
42
  end
43
43
  entries
@@ -46,7 +46,7 @@ module GutenbergRdf
46
46
  private
47
47
 
48
48
  def name_parts
49
- parts = xml.xpath('//pgterms:name').text.split(/, */)
49
+ parts = xml.elements['pgterms:agent/pgterms:name'].text.split(/, */)
50
50
  last = parts.shift
51
51
  first = parts.reverse.join(' ')
52
52
 
@@ -5,15 +5,15 @@ module GutenbergRdf
5
5
  attr_reader :xml
6
6
 
7
7
  def initialize(xml)
8
- @xml = xml.at_xpath('rdf:RDF')
8
+ @xml = xml.root
9
9
  end
10
10
 
11
11
  def id
12
- xml.at_xpath('pgterms:ebook').attribute('about').content.match(/\Aebooks\/(.+)\z/)[1]
12
+ xml.elements['pgterms:ebook'].attributes['about'].match(/\Aebooks\/(.+)\z/)[1]
13
13
  end
14
14
 
15
15
  def type
16
- xml.at_xpath('pgterms:ebook/dcterms:type/rdf:Description/rdf:value').text
16
+ xml.elements['pgterms:ebook/dcterms:type/rdf:Description/rdf:value'].text
17
17
  end
18
18
 
19
19
  def title
@@ -30,9 +30,9 @@ module GutenbergRdf
30
30
 
31
31
  def subjects
32
32
  entries = Array.new
33
- xml.xpath('pgterms:ebook//dcterms:subject').each do |entry|
34
- next unless entry.at_xpath('rdf:Description/dcam:memberOf').attribute('resource').text.match(/LCSH\z/)
35
- entry.xpath('rdf:Description//rdf:value').each do |value|
33
+ xml.elements.each('pgterms:ebook/dcterms:subject') do |entry|
34
+ next unless entry.elements['rdf:Description/dcam:memberOf'].attributes['resource'].match(/LCSH\z/)
35
+ entry.elements.each('rdf:Description//rdf:value') do |value|
36
36
  entries << value.text
37
37
  end
38
38
  end
@@ -40,19 +40,19 @@ module GutenbergRdf
40
40
  end
41
41
 
42
42
  def published
43
- xml.at_xpath('pgterms:ebook/dcterms:issued').text
43
+ xml.elements['pgterms:ebook/dcterms:issued'].text
44
44
  end
45
45
 
46
46
  def publisher
47
- xml.at_xpath('pgterms:ebook/dcterms:publisher').text
47
+ xml.elements['pgterms:ebook/dcterms:publisher'].text
48
48
  end
49
49
 
50
50
  def language
51
- xml.at_xpath('pgterms:ebook/dcterms:language').text
51
+ xml.elements['pgterms:ebook/dcterms:language'].text
52
52
  end
53
53
 
54
54
  def rights
55
- xml.at_xpath('pgterms:ebook/dcterms:rights').text
55
+ xml.elements['pgterms:ebook/dcterms:rights'].text
56
56
  end
57
57
 
58
58
  def covers
@@ -61,10 +61,10 @@ module GutenbergRdf
61
61
 
62
62
  def ebooks
63
63
  files = Array.new
64
- xml.xpath('//pgterms:file').each do |file|
65
- uri = file.attribute('about').content
66
- datatypes = separate_mimetype_and_encoding(file.at_xpath('dcterms:format/rdf:Description/rdf:value').text)
67
- modified = DateTime.parse(file.at_xpath('dcterms:modified').text + '-07:00')
64
+ xml.elements.each('pgterms:file') do |file|
65
+ uri = file.attributes['about']
66
+ datatypes = separate_mimetype_and_encoding(file.elements['dcterms:format/rdf:Description/rdf:value'].text)
67
+ modified = DateTime.parse(file.elements['dcterms:modified'].text + '-07:00')
68
68
  files << {uri: uri, mime_type: datatypes[:mimetype], encoding: datatypes[:encoding], modified: modified}
69
69
  end
70
70
  files
@@ -77,8 +77,8 @@ module GutenbergRdf
77
77
  end
78
78
 
79
79
  def split_title_and_subtitle
80
- # Note this gsub is replacing UTF-8 hyphens with normal ASCII ones
81
- t = xml.at_xpath('pgterms:ebook/dcterms:title').text.gsub(/—/, '-')
80
+ # NOTE: this gsub is replacing UTF-8 hyphens with normal ASCII ones
81
+ t = xml.elements['pgterms:ebook/dcterms:title'].text.gsub(/—/, '-')
82
82
 
83
83
  title_array = t.split(/\n/)
84
84
  title_array = title_array.first.split(/:/) if title_array.count == 1
@@ -89,24 +89,30 @@ module GutenbergRdf
89
89
 
90
90
  def extract_authors
91
91
  entries = Array.new
92
- xml.xpath('//pgterms:agent').each do |agent|
93
- entries << Agent.new(agent)
92
+ xml.elements.each('pgterms:agent') do |agent|
93
+ entries << Agent.new(agent.root)
94
94
  end
95
95
  entries
96
96
  end
97
97
 
98
98
  def official_cover_images
99
99
  entries = Array.new
100
- xml.xpath('//pgterms:file').each do |file|
101
- url = file.attribute('about').content
102
- entries << url if file.xpath('dcterms:format/rdf:Description//rdf:value').detect { |v| v.text.match(/image/) }
100
+ xml.elements.each('pgterms:file') do |file|
101
+ entries << file.attributes['about'] if file_is_image?(file)
103
102
  end
104
103
  entries
105
104
  end
106
105
 
106
+ def file_is_image?(node)
107
+ node.elements.each('dcterms:format/rdf:Description/rdf:value') do |value|
108
+ return true if value.text.match(/image/)
109
+ end
110
+ false
111
+ end
112
+
107
113
  def other_cover_images
108
114
  entries = Array.new
109
- xml.xpath('pgterms:ebook//pgterms:marc901').each do |node|
115
+ xml.elements.each('pgterms:ebook/pgterms:marc901') do |node|
110
116
  cover = node.text
111
117
  cover.sub!(/\Afile:\/\/\/public\/vhost\/g\/gutenberg\/html/, 'http://www.gutenberg.org')
112
118
  entries << cover
@@ -1,3 +1,3 @@
1
1
  module GutenbergRdf
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/gutenberg_rdf.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'nokogiri'
1
+ require 'rexml/document'
2
2
 
3
3
  require "gutenberg_rdf/rdf"
4
4
  require "gutenberg_rdf/rdf/agent"
@@ -7,7 +7,7 @@ require "gutenberg_rdf/version"
7
7
  module GutenbergRdf
8
8
 
9
9
  def self.parse(path)
10
- Rdf.new(Nokogiri::XML(File.new(path)))
10
+ Rdf.new(REXML::Document.new(File.new(path)))
11
11
  end
12
12
 
13
13
  end
@@ -14,8 +14,8 @@ module GutenbergRdf
14
14
  <pgterms:webpage rdf:resource="http://en.wikipedia.org/wiki/Jon_James_Doe"/>
15
15
  </pgterms:agent>
16
16
  </rdf:RDF>'
17
- rdf = Nokogiri::XML(xml)
18
- Agent.new(rdf.at_xpath('rdf:RDF'))
17
+ rdf = REXML::Document.new(xml)
18
+ Agent.new(rdf.root)
19
19
  end
20
20
 
21
21
  it "expects an agent ID" do
@@ -58,8 +58,8 @@ module GutenbergRdf
58
58
  <pgterms:name>Dato</pgterms:name>
59
59
  </pgterms:agent>
60
60
  </rdf:RDF>'
61
- rdf = Nokogiri::XML(xml)
62
- Agent.new(rdf.at_xpath('rdf:RDF'))
61
+ rdf = REXML::Document.new(xml)
62
+ Agent.new(rdf.root)
63
63
  end
64
64
 
65
65
  it "expects it to be assigned to the last name" do
@@ -77,8 +77,8 @@ module GutenbergRdf
77
77
  <pgterms:name>Doe, Jon, Sir</pgterms:name>
78
78
  </pgterms:agent>
79
79
  </rdf:RDF>'
80
- rdf = Nokogiri::XML(xml)
81
- Agent.new(rdf.at_xpath('rdf:RDF'))
80
+ rdf = REXML::Document.new(xml)
81
+ Agent.new(rdf.root)
82
82
  end
83
83
 
84
84
  it "expects the correct name order" do
@@ -94,8 +94,8 @@ module GutenbergRdf
94
94
  <pgterms:name>Doe, J. J. (Jon James)</pgterms:name>
95
95
  </pgterms:agent>
96
96
  </rdf:RDF>'
97
- rdf = Nokogiri::XML(xml)
98
- Agent.new(rdf.at_xpath('rdf:RDF'))
97
+ rdf = REXML::Document.new(xml)
98
+ Agent.new(rdf.root)
99
99
  end
100
100
 
101
101
  it "expects initials to replaced by name in brackets" do
@@ -12,7 +12,7 @@ module GutenbergRdf
12
12
  </pgterms:ebook>
13
13
  </rdf:RDF>'
14
14
  end
15
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
15
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
16
16
 
17
17
  it "expects an id" do
18
18
  expect(rdf.id).to eql "98765"
@@ -32,7 +32,7 @@ module GutenbergRdf
32
32
 
33
33
  describe "#type" do
34
34
  let(:xml) do
35
- '<rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
35
+ '<rdf:RDF xmlns:dcam="http://purl.org/dc/dcam/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
36
36
  <pgterms:ebook rdf:about="ebooks/98765">
37
37
  <dcterms:type>
38
38
  <rdf:Description>
@@ -43,7 +43,7 @@ module GutenbergRdf
43
43
  </pgterms:ebook>
44
44
  </rdf:RDF>'
45
45
  end
46
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
46
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
47
47
 
48
48
  it "expect the type of entity" do
49
49
  expect(rdf.type).to eql 'Text'
@@ -58,7 +58,7 @@ module GutenbergRdf
58
58
  </pgterms:ebook>
59
59
  </rdf:RDF>'
60
60
  end
61
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
61
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
62
62
 
63
63
  it "expects a title" do
64
64
  expect(rdf.title).to eql 'A Great Title'
@@ -76,7 +76,7 @@ module GutenbergRdf
76
76
  </pgterms:ebook>
77
77
  </rdf:RDF>'
78
78
  end
79
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
79
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
80
80
 
81
81
  it "expects the title to be the first line" do
82
82
  expect(rdf.title).to eql 'A Great Multi-Title'
@@ -94,7 +94,7 @@ module GutenbergRdf
94
94
  </pgterms:ebook>
95
95
  </rdf:RDF>'
96
96
  end
97
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
97
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
98
98
 
99
99
  it "expects a title" do
100
100
  expect(rdf.title).to eql 'A Great Multi-Title'
@@ -112,7 +112,7 @@ module GutenbergRdf
112
112
  </pgterms:ebook>
113
113
  </rdf:RDF>'
114
114
  end
115
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
115
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
116
116
  it "expects a title" do
117
117
  expect(rdf.title).to eql 'A Great Multi-Title'
118
118
  end
@@ -129,7 +129,7 @@ module GutenbergRdf
129
129
  </pgterms:ebook>
130
130
  </rdf:RDF>'
131
131
  end
132
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
132
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
133
133
  it "expects a title" do
134
134
  expect(rdf.title).to eql 'A Great Multi-Title; and some other text'
135
135
  end
@@ -156,7 +156,8 @@ module GutenbergRdf
156
156
  </pgterms:agent>
157
157
  </rdf:RDF>'
158
158
  end
159
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
159
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
160
+
160
161
  it "expects a Array" do
161
162
  expect(rdf.authors.class).to be Array
162
163
  end
@@ -188,7 +189,7 @@ module GutenbergRdf
188
189
  </pgterms:ebook>
189
190
  </rdf:RDF>}
190
191
  end
191
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
192
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
192
193
  it "expects correct number to be returned" do
193
194
  expect(rdf.subjects.count).to be 2
194
195
  end
@@ -201,7 +202,7 @@ module GutenbergRdf
201
202
  describe "#covers" do
202
203
  describe "official PG covers" do
203
204
  let(:xml) do
204
- '<rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
205
+ '<rdf:RDF xmlns:dcam="http://purl.org/dc/dcam/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
205
206
  <pgterms:ebook rdf:about="ebooks/12345">
206
207
  <dcterms:hasFormat rdf:resource="http://www.gutenberg.org/ebooks/12345.epub.noimages"/>
207
208
  <dcterms:hasFormat rdf:resource="http://www.gutenberg.org/ebooks/12345.cover.medium"/>
@@ -243,7 +244,7 @@ module GutenbergRdf
243
244
  </pgterms:file>
244
245
  </rdf:RDF>'
245
246
  end
246
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
247
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
247
248
 
248
249
  it "expects the correct number of entries returned" do
249
250
  expect(rdf.covers.count).to be 3
@@ -267,7 +268,7 @@ module GutenbergRdf
267
268
  </pgterms:ebook>
268
269
  </rdf:RDF>'
269
270
  end
270
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
271
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
271
272
 
272
273
  it "expects only unique entries" do
273
274
  expect(rdf.covers.count).to be 2
@@ -284,7 +285,7 @@ module GutenbergRdf
284
285
 
285
286
  describe "#ebook" do
286
287
  let(:xml) do
287
- '<rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
288
+ '<rdf:RDF xmlns:dcam="http://purl.org/dc/dcam/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
288
289
  <pgterms:ebook rdf:about="ebooks/98765">
289
290
  <dcterms:hasFormat rdf:resource="http://www.gutenberg.org/ebooks/98765.txt.utf-8"/>
290
291
  <dcterms:hasFormat rdf:resource="http://www.gutenberg.org/ebooks/98765.zip"/>
@@ -314,7 +315,7 @@ module GutenbergRdf
314
315
  </pgterms:file>
315
316
  </rdf:RDF>'
316
317
  end
317
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
318
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
318
319
 
319
320
  it "expects the correct number of entries" do
320
321
  expect(rdf.ebooks.count).to be 2
@@ -344,7 +345,7 @@ module GutenbergRdf
344
345
 
345
346
  context "when there are two mime-types" do
346
347
  let(:xml) do
347
- '<rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
348
+ '<rdf:RDF xmlns:dcam="http://purl.org/dc/dcam/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
348
349
  <pgterms:file rdf:about="http://www.gutenberg.org/files/98765/98765.zip">
349
350
  <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">116685</dcterms:extent>
350
351
  <dcterms:format>
@@ -359,7 +360,7 @@ module GutenbergRdf
359
360
  </pgterms:file>
360
361
  </rdf:RDF>'
361
362
  end
362
- let(:rdf) { Rdf.new(Nokogiri::XML(xml)) }
363
+ let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
363
364
 
364
365
  it "should use just the first one" do
365
366
  expect(rdf.ebooks.first[:mime_type]).to eql 'application/zip'
metadata CHANGED
@@ -1,57 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gutenberg_rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Cook
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-18 00:00:00.000000000 Z
11
+ date: 2013-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: nokogiri
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: 1.6.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: 1.6.0
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.3'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ~>
39
- - !ruby/object:Gem::Version
40
- version: '1.3'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
13
  - !ruby/object:Gem::Dependency
56
14
  name: rspec
57
15
  requirement: !ruby/object:Gem::Requirement
@@ -66,8 +24,8 @@ dependencies:
66
24
  - - ~>
67
25
  - !ruby/object:Gem::Version
68
26
  version: 2.14.1
69
- description: A Ruby wrapper providing a nice API for the Project Gutenberg RDF catalog
70
- files. See the README for more information.
27
+ description: A Ruby wrapper for the Project Gutenberg RDF catalog files (requires
28
+ Ruby 2).
71
29
  email:
72
30
  - m@mikecook.co.uk
73
31
  executables: []