gutenberg_rdf 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 26b9401e7a3223ad122100f096eebf5585a97e0e
4
- data.tar.gz: 5fe2df876d2878fd9628edf6367c2d2d6c381803
2
+ SHA256:
3
+ metadata.gz: 0be60949cba5d85382505e3f733dd10c8073a195686445eb8155d7daccc5f1be
4
+ data.tar.gz: 52891b85fe5c929dde273c1f88d917088c5ae59208d6bc3586399dabc9b433a7
5
5
  SHA512:
6
- metadata.gz: 7fa836f7d515c77d2418e700b43ac00e1e4cef0809b967ed2a58ce929f7edb7b68c6d33a64c7f20920f775cf7b07a5e5a8d6d63e0df5a4f5f6efdb4b0a5e6cc0
7
- data.tar.gz: 80db01f7fc89fc2bbfb4536454a8b37fa962328e3a93ac1a487c009a92963549fa241e938bedbabedfb85a997911a3b29ccde294ed07502ddb0907b02eeccbd7
6
+ metadata.gz: 410da42160bc5de3f58c8317e2e822bf9f1b47ad436b43293c0bb32585c8786e377c7f3b0598dd5842227b628a167655f6915adc88f123978d1a7120fdc5429a
7
+ data.tar.gz: b2211f3aec3f89b6aca3576f76ce4bddd2867e1ef341f4090fd4ceff9478fe65a7cec6f94c8044da86178f3b5a9a04bfe93ea4f91d7c57ad6879427b7da25a52
data/.gitignore CHANGED
@@ -1,20 +1,16 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+
1
13
  *.gem
2
14
  *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
15
 
19
- .ruby-*
20
16
  .DS_Store
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
+ --format documentation
1
2
  --color
2
- --format progress
3
+ --require spec_helper
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in gutenberg_rdf.gemspec
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in test.gemspec
4
6
  gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,32 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gutenberg_rdf (0.4.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.3)
10
+ rspec (3.8.0)
11
+ rspec-core (~> 3.8.0)
12
+ rspec-expectations (~> 3.8.0)
13
+ rspec-mocks (~> 3.8.0)
14
+ rspec-core (3.8.0)
15
+ rspec-support (~> 3.8.0)
16
+ rspec-expectations (3.8.1)
17
+ diff-lcs (>= 1.2.0, < 2.0)
18
+ rspec-support (~> 3.8.0)
19
+ rspec-mocks (3.8.0)
20
+ diff-lcs (>= 1.2.0, < 2.0)
21
+ rspec-support (~> 3.8.0)
22
+ rspec-support (3.8.0)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ gutenberg_rdf!
29
+ rspec (>= 3.4.0)
30
+
31
+ BUNDLED WITH
32
+ 1.16.1
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Mike Cook
1
+ Copyright (c) 2013-2018 Michael R. Cook
2
2
 
3
3
  MIT License
4
4
 
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+
5
+ # You can add fixtures and/or initialization code here to make experimenting
6
+ # with your gem easier. You can also use a different console, if you like.
7
+
8
+ # (If you use this, don't forget to add pry to your Gemfile!)
9
+ # require "pry"
10
+ # Pry.start
11
+
12
+ require "irb"
13
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -1,23 +1,26 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'gutenberg_rdf/version'
3
+ require "gutenberg_rdf/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "gutenberg_rdf"
7
7
  spec.version = GutenbergRdf::VERSION
8
- spec.authors = ["Mike Cook"]
9
- spec.email = ["m@mikecook.co.uk"]
8
+ spec.authors = ["Michael R. Cook"]
9
+ spec.email = ["git@mrcook.uk"]
10
+
10
11
  spec.summary = %q{A Ruby wrapper for the Project Gutenberg RDF catalog files.}
11
12
  spec.description = %q{A Ruby wrapper for the Project Gutenberg RDF catalog files (requires Ruby 2).}
12
13
  spec.homepage = "https://github.com/mrcook/gutenberg_rdf"
13
14
  spec.license = "MIT"
14
15
 
15
- spec.files = `git ls-files`.split($/)
16
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
21
  spec.require_paths = ["lib"]
19
22
 
20
23
  spec.required_ruby_version = ">= 2.0.0" # so we have UTF-8 by default
21
24
 
22
- spec.add_development_dependency "rspec", "~> 2.14"
25
+ spec.add_development_dependency "rspec", ">= 3.4.0"
23
26
  end
data/lib/gutenberg_rdf.rb CHANGED
@@ -1,14 +1,12 @@
1
1
  require 'rexml/document'
2
2
 
3
- require "gutenberg_rdf/rdf"
4
- require "gutenberg_rdf/rdf/agent"
5
- require "gutenberg_rdf/rdf/media"
6
- require "gutenberg_rdf/version"
3
+ require 'gutenberg_rdf/rdf'
4
+ require 'gutenberg_rdf/rdf/agent'
5
+ require 'gutenberg_rdf/rdf/media'
6
+ require 'gutenberg_rdf/version'
7
7
 
8
8
  module GutenbergRdf
9
-
10
9
  def self.parse(path)
11
10
  Rdf.new(REXML::Document.new(File.new(path)))
12
11
  end
13
-
14
12
  end
@@ -68,7 +68,7 @@ module GutenbergRdf
68
68
  files
69
69
  end
70
70
 
71
- private
71
+ private
72
72
 
73
73
  def titles
74
74
  @titles ||= split_title_and_subtitle
@@ -126,6 +126,5 @@ module GutenbergRdf
126
126
  end
127
127
  entries.sort
128
128
  end
129
-
130
129
  end
131
130
  end
@@ -52,7 +52,7 @@ module GutenbergRdf
52
52
  entries
53
53
  end
54
54
 
55
- private
55
+ private
56
56
 
57
57
  def name_parts
58
58
  parts = xml.elements['pgterms:name'].text.split(/, */)
@@ -61,7 +61,6 @@ module GutenbergRdf
61
61
 
62
62
  {first: first, last: last}
63
63
  end
64
-
65
64
  end
66
65
  end
67
66
  end
@@ -23,7 +23,7 @@ module GutenbergRdf
23
23
  DateTime.parse(xml.elements['dcterms:modified'].text + '-07:00')
24
24
  end
25
25
 
26
- private
26
+ private
27
27
 
28
28
  def datatype
29
29
  parts = xml.elements['dcterms:format/rdf:Description/rdf:value'].text.split(/; */)
@@ -31,7 +31,6 @@ module GutenbergRdf
31
31
  e = parts.join(';').sub('charset=', '')
32
32
  {type: t, encoding: e}
33
33
  end
34
-
35
34
  end
36
35
  end
37
36
  end
@@ -1,3 +1,3 @@
1
1
  module GutenbergRdf
2
- VERSION = "0.4.0"
2
+ VERSION = '1.0.0'
3
3
  end
metadata CHANGED
@@ -1,56 +1,53 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gutenberg_rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Mike Cook
7
+ - Michael R. Cook
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2014-07-18 00:00:00.000000000 Z
11
+ date: 2018-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.14'
19
+ version: 3.4.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.14'
26
+ version: 3.4.0
27
27
  description: A Ruby wrapper for the Project Gutenberg RDF catalog files (requires
28
28
  Ruby 2).
29
29
  email:
30
- - m@mikecook.co.uk
31
- executables:
32
- - rdf
30
+ - git@mrcook.uk
31
+ executables: []
33
32
  extensions: []
34
33
  extra_rdoc_files: []
35
34
  files:
36
35
  - ".gitignore"
37
36
  - ".rspec"
38
37
  - Gemfile
38
+ - Gemfile.lock
39
39
  - LICENSE.txt
40
40
  - README.md
41
41
  - Rakefile
42
+ - bin/console
42
43
  - bin/rdf
44
+ - bin/setup
43
45
  - gutenberg_rdf.gemspec
44
46
  - lib/gutenberg_rdf.rb
45
47
  - lib/gutenberg_rdf/rdf.rb
46
48
  - lib/gutenberg_rdf/rdf/agent.rb
47
49
  - lib/gutenberg_rdf/rdf/media.rb
48
50
  - lib/gutenberg_rdf/version.rb
49
- - spec/gutenberg_rdf/rdf/agent_spec.rb
50
- - spec/gutenberg_rdf/rdf/media_spec.rb
51
- - spec/gutenberg_rdf/rdf_spec.rb
52
- - spec/gutenberg_rdf_spec.rb
53
- - spec/spec_helper.rb
54
51
  homepage: https://github.com/mrcook/gutenberg_rdf
55
52
  licenses:
56
53
  - MIT
@@ -71,14 +68,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
68
  version: '0'
72
69
  requirements: []
73
70
  rubyforge_project:
74
- rubygems_version: 2.3.0
71
+ rubygems_version: 2.7.6
75
72
  signing_key:
76
73
  specification_version: 4
77
74
  summary: A Ruby wrapper for the Project Gutenberg RDF catalog files.
78
- test_files:
79
- - spec/gutenberg_rdf/rdf/agent_spec.rb
80
- - spec/gutenberg_rdf/rdf/media_spec.rb
81
- - spec/gutenberg_rdf/rdf_spec.rb
82
- - spec/gutenberg_rdf_spec.rb
83
- - spec/spec_helper.rb
84
- has_rdoc:
75
+ test_files: []
@@ -1,122 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module GutenbergRdf
4
- class Rdf
5
- describe Agent do
6
- let(:xml) do
7
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:marcrel="http://id.loc.gov/vocabulary/relators/">
8
- <pgterms:ebook rdf:about="ebooks/99999999">
9
- <dcterms:creator>
10
- <pgterms:agent rdf:about="2009/agents/402">
11
- <pgterms:deathdate rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1905</pgterms:deathdate>
12
- <pgterms:birthdate rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1830</pgterms:birthdate>
13
- <pgterms:name>Doe, Jon James</pgterms:name>
14
- <pgterms:alias>Doe, Jon</pgterms:alias>
15
- <pgterms:alias>Doe, J. J.</pgterms:alias>
16
- <pgterms:webpage rdf:resource="http://en.wikipedia.org/wiki/Jon_James_Doe"/>
17
- </pgterms:agent>
18
- </dcterms:creator>
19
- </pgterms:ebook>
20
- </rdf:RDF>'
21
- end
22
- let(:agent) do
23
- Agent.new(REXML::Document.new(xml).root.elements['pgterms:ebook/dcterms:creator/pgterms:agent'])
24
- end
25
-
26
- it "expects an agent ID" do
27
- expect(agent.id).to eq '402'
28
- end
29
-
30
- it "sets a default role" do
31
- expect(agent.role).to eq 'oth'
32
- end
33
-
34
- it "expects the last name" do
35
- expect(agent.lastname).to eq 'Doe'
36
- end
37
-
38
- it "expects the first name(s)" do
39
- expect(agent.firstname).to eq 'Jon James'
40
- end
41
-
42
- it "expects the full name" do
43
- expect(agent.fullname).to eq 'Jon James Doe'
44
- end
45
-
46
- it "returns the #fullname when to_s is called" do
47
- expect(agent.to_s).to eq 'Jon James Doe'
48
- end
49
-
50
- it "expects a birth date" do
51
- expect(agent.birthdate).to eq '1830'
52
- end
53
-
54
- it "expects a death date" do
55
- expect(agent.deathdate).to eq '1905'
56
- end
57
-
58
- it "expects a webpage" do
59
- expect(agent.webpage).to eq 'http://en.wikipedia.org/wiki/Jon_James_Doe'
60
- end
61
-
62
- it "expects any alias names" do
63
- expect(agent.aliases[0]).to eq 'Doe, Jon'
64
- expect(agent.aliases[1]).to eq 'Doe, J. J.'
65
- end
66
-
67
- context "when only a single name is given" do
68
- let(:agent) do
69
- xml = '<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#">
70
- <pgterms:agent rdf:about="2009/agents/402">
71
- <pgterms:name>Dato</pgterms:name>
72
- </pgterms:agent>
73
- </rdf:RDF>'
74
- Agent.new(REXML::Document.new(xml).root.elements['pgterms:agent'])
75
- end
76
-
77
- it "expects it to be assigned to the last name" do
78
- expect(agent.lastname).to eq 'Dato'
79
- end
80
- it "expects firstname to be an empty string" do
81
- expect(agent.firstname).to eq ''
82
- end
83
- end
84
-
85
- context "when the name has a suffix" do
86
- let(:agent) do
87
- xml = '<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#">
88
- <pgterms:agent rdf:about="2009/agents/402">
89
- <pgterms:name>Doe, Jon, Sir</pgterms:name>
90
- </pgterms:agent>
91
- </rdf:RDF>'
92
- Agent.new(REXML::Document.new(xml).root.elements['pgterms:agent'])
93
- end
94
-
95
- it "expects the correct name order" do
96
- expect(agent.firstname).to eq 'Sir Jon'
97
- expect(agent.lastname).to eq 'Doe'
98
- end
99
- end
100
-
101
- context "when full name is given in (brackets)" do
102
- let(:agent) do
103
- xml = '<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#">
104
- <pgterms:agent agent:about="2009/agents/402">
105
- <pgterms:name>Doe, J. J. (Jon James)</pgterms:name>
106
- </pgterms:agent>
107
- </rdf:RDF>'
108
- Agent.new(REXML::Document.new(xml).root.elements['pgterms:agent'])
109
- end
110
-
111
- it "expects initials to replaced by name in brackets" do
112
- pending "Not yet implemented"
113
- expect(agent.firstname).to eq 'Jon James'
114
- expect(agent.lastname).to eq 'Doe'
115
- end
116
- it "expects the name (excluding name in brackets) to be added to the aliases"
117
- it "should not have duplicate aliases"
118
- end
119
- end
120
-
121
- end
122
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module GutenbergRdf
4
- class Rdf
5
- describe Media do
6
- let(:xml) do
7
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
8
- <pgterms:ebook rdf:about="ebooks/98765">
9
- <dcterms:hasFormat>
10
- <pgterms:file rdf:about="http://www.gutenberg.org/ebooks/98765.txt.utf-8">
11
- <dcterms:isFormatOf rdf:resource="ebooks/98765"/>
12
- <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">293684</dcterms:extent>
13
- <dcterms:format>
14
- <rdf:Description rdf:nodeID="N87dfy78yd78s6gsg6f8970d76g0f6d9b">
15
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">text/plain; charset=utf-8</rdf:value>
16
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
17
- </rdf:Description>
18
- </dcterms:format>
19
- <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-02-16T08:29:52.373092</dcterms:modified>
20
- </pgterms:file>
21
- </dcterms:hasFormat>
22
- </pgterms:ebook>
23
- </rdf:RDF>'
24
- end
25
- let(:media) { Media.new(REXML::Document.new(xml).elements['rdf:RDF/pgterms:ebook/dcterms:hasFormat/pgterms:file']) }
26
-
27
- it "expects the file URI" do
28
- expect(media.uri).to eql 'http://www.gutenberg.org/ebooks/98765.txt.utf-8'
29
- end
30
- it "expects the file media type" do
31
- expect(media.media_type).to eql 'text/plain'
32
- end
33
- it "expects the file encoding" do
34
- expect(media.encoding).to eql 'utf-8'
35
- end
36
- it "expects modified to be a DateTime" do
37
- expect(media.modified.class).to be DateTime
38
- end
39
- it "should return the modified datetime" do
40
- expect(media.modified.to_s).to eql '2010-02-16T08:29:52-07:00'
41
- end
42
- end
43
- end
44
- end
@@ -1,411 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module GutenbergRdf
4
- describe Rdf do
5
-
6
- describe "basic metadata" do
7
- let(:xml) do
8
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
9
- <pgterms:ebook rdf:about="ebooks/98765">
10
- <dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2006-09-28</dcterms:issued>
11
- <dcterms:language>
12
- <rdf:Description rdf:nodeID="N88989dfs7984987df987cvcsd876ew79">
13
- <rdf:value rdf:datatype="http://purl.org/dc/terms/RFC4646">en</rdf:value>
14
- </rdf:Description>
15
- </dcterms:language>
16
- <dcterms:publisher>Project Gutenberg</dcterms:publisher>
17
- <dcterms:rights>Public domain in the USA.</dcterms:rights>
18
- </pgterms:ebook>
19
- </rdf:RDF>'
20
- end
21
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
22
-
23
- it "expects an id" do
24
- expect(rdf.id).to eql "98765"
25
- end
26
- it "expects a published date" do
27
- expect(rdf.published).to eql "2006-09-28"
28
- end
29
- it "expects a publisher" do
30
- expect(rdf.publisher).to eql "Project Gutenberg"
31
- end
32
- it "expects a language" do
33
- expect(rdf.language).to eql "en"
34
- end
35
- it "expects the rights" do
36
- expect(rdf.rights).to eql "Public domain in the USA."
37
- end
38
- end
39
-
40
- describe "#type" do
41
- let(:xml) do
42
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
43
- <pgterms:ebook rdf:about="ebooks/98765">
44
- <dcterms:type>
45
- <rdf:Description rdf:nodeID="Nd89943yhljdsf93489ydfs897g7fd897">
46
- <rdf:value>Text</rdf:value>
47
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
48
- </rdf:Description>
49
- </dcterms:type>
50
- </pgterms:ebook>
51
- </rdf:RDF>'
52
- end
53
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
54
-
55
- it "expect the type of entity" do
56
- expect(rdf.type).to eql 'Text'
57
- end
58
- end
59
-
60
- describe "Titles" do
61
- let(:xml) do
62
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
63
- <pgterms:ebook rdf:about="ebooks/98765">
64
- <dcterms:title>A Great Title</dcterms:title>
65
- </pgterms:ebook>
66
- </rdf:RDF>'
67
- end
68
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
69
-
70
- it "expects a title" do
71
- expect(rdf.title).to eql 'A Great Title'
72
- end
73
- it "expects subtitle to be empty" do
74
- expect(rdf.subtitle).to eql ''
75
- end
76
-
77
- context "with a title and subtitle, on separate lines" do
78
- let(:xml) do
79
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
80
- <pgterms:ebook rdf:about="ebooks/98765">
81
- <dcterms:title>A Great Multi-Title
82
- Or, a Subtitle</dcterms:title>
83
- </pgterms:ebook>
84
- </rdf:RDF>'
85
- end
86
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
87
-
88
- it "expects the title to be the first line" do
89
- expect(rdf.title).to eql 'A Great Multi-Title'
90
- end
91
- it "expects the subtitle to be the second line" do
92
- expect(rdf.subtitle).to eql 'Or, a Subtitle'
93
- end
94
- end
95
-
96
- context "with; title, or, subtitle (we need to split on the 'or')" do
97
- let(:xml) do
98
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
99
- <pgterms:ebook rdf:about="ebooks/98765">
100
- <dcterms:title>A Great Multi-Title, or, a Subtitle</dcterms:title>
101
- </pgterms:ebook>
102
- </rdf:RDF>'
103
- end
104
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
105
-
106
- it "expects the title to be the first line" do
107
- expect(rdf.title).to eql 'A Great Multi-Title'
108
- end
109
- it "expects the subtitle to be the second line" do
110
- expect(rdf.subtitle).to eql 'a Subtitle'
111
- end
112
- end
113
-
114
- context "when title:subtitle are separated by a colon" do
115
- let(:xml) do
116
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
117
- <pgterms:ebook rdf:about="ebooks/98765">
118
- <dcterms:title>A Great Multi-Title: And a Subtitle</dcterms:title>
119
- </pgterms:ebook>
120
- </rdf:RDF>'
121
- end
122
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
123
-
124
- it "expects a title" do
125
- expect(rdf.title).to eql 'A Great Multi-Title'
126
- end
127
- it "expects a subtitle" do
128
- expect(rdf.subtitle).to eql 'And a Subtitle'
129
- end
130
- end
131
-
132
- context "when title; and subtitle are separated by a semi-colon" do
133
- let(:xml) do
134
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
135
- <pgterms:ebook rdf:about="ebooks/98765">
136
- <dcterms:title>A Great Multi-Title; Or, a Subtitle</dcterms:title>
137
- </pgterms:ebook>
138
- </rdf:RDF>'
139
- end
140
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
141
- it "expects a title" do
142
- expect(rdf.title).to eql 'A Great Multi-Title'
143
- end
144
- it "expects a subtitle" do
145
- expect(rdf.subtitle).to eql 'Or, a Subtitle'
146
- end
147
-
148
- context "...except when subtitles already exists" do
149
- let(:xml) do
150
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
151
- <pgterms:ebook rdf:about="ebooks/98765">
152
- <dcterms:title>A Great Multi-Title; and some other text
153
- Then a Subtitle on a newline</dcterms:title>
154
- </pgterms:ebook>
155
- </rdf:RDF>'
156
- end
157
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
158
- it "expects a title" do
159
- expect(rdf.title).to eql 'A Great Multi-Title; and some other text'
160
- end
161
- it "expects a subtitle" do
162
- expect(rdf.subtitle).to eql 'Then a Subtitle on a newline'
163
- end
164
- end
165
- end
166
- end
167
-
168
- describe "#authors" do
169
- let(:xml) do
170
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:marcrel="http://id.loc.gov/vocabulary/relators/">
171
- <pgterms:ebook rdf:about="ebooks/99999999">
172
- <dcterms:creator>
173
- <pgterms:agent rdf:about="2009/agents/116">
174
- <pgterms:alias>Verschillende</pgterms:alias>
175
- <pgterms:name>Various</pgterms:name>
176
- </pgterms:agent>
177
- </dcterms:creator>
178
- <marcrel:ctb>
179
- <pgterms:agent rdf:about="2009/agents/402">
180
- <pgterms:deathdate rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1830</pgterms:deathdate>
181
- <pgterms:birthdate rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1905</pgterms:birthdate>
182
- <pgterms:name>Dodge, Mary Mapes</pgterms:name>
183
- <pgterms:alias>Dodge, Mary</pgterms:alias>
184
- <pgterms:webpage rdf:resource="http://en.wikipedia.org/wiki/Mary_Mapes_Dodge"/>
185
- </pgterms:agent>
186
- </marcrel:ctb>
187
- </pgterms:ebook>
188
- </rdf:RDF>'
189
- end
190
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
191
-
192
- it "returns the correct number of authors" do
193
- expect(rdf.authors.count).to be 2
194
- end
195
- it "expects an Agent object" do
196
- expect(rdf.authors[0]).to be_an_instance_of Rdf::Agent
197
- end
198
- it "expects the author to have an aut role" do
199
- expect(rdf.authors[0].role).to eq 'aut'
200
- end
201
- it "has the correct author names" do
202
- expect(rdf.authors[1].fullname).to eq 'Mary Mapes Dodge'
203
- end
204
- it "expects other agents to have the correct role" do
205
- expect(rdf.authors[1].role).to eq 'ctb'
206
- end
207
- end
208
-
209
- describe "#subjects" do
210
- let(:xml) do
211
- %q{<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
212
- <pgterms:ebook rdf:about="ebooks/98765">
213
- <dcterms:subject>
214
- <rdf:Description rdf:nodeID="Ndfsc8xdsfwar734897n7sdofyhod11b9">
215
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/LCC"/>
216
- <rdf:value>PZ</rdf:value>
217
- </rdf:Description>
218
- </dcterms:subject>
219
- <dcterms:subject>
220
- <rdf:Description rdf:nodeID="Ndfcdh8934hsdljkfh98y89hlfhltyab8">
221
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/LCSH"/>
222
- <rdf:value>Children's literature -- Periodicals</rdf:value>
223
- <rdf:value>Children's periodicals, American</rdf:value>
224
- </rdf:Description>
225
- </dcterms:subject>
226
- </pgterms:ebook>
227
- </rdf:RDF>}
228
- end
229
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
230
- it "expects correct number to be returned" do
231
- expect(rdf.subjects.count).to be 2
232
- end
233
- it "expects the correct data" do
234
- expect(rdf.subjects.first).to eql "Children's literature -- Periodicals"
235
- expect(rdf.subjects.last).to eql "Children's periodicals, American"
236
- end
237
- end
238
-
239
- describe "#covers" do
240
- describe "official PG covers" do
241
- let(:xml) do
242
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
243
- <pgterms:ebook rdf:about="ebooks/98765">
244
- <dcterms:hasFormat>
245
- <pgterms:file rdf:about="http://www.gutenberg.org/cache/epub/98765/pg98765.cover.small.jpg">
246
- <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">2699</dcterms:extent>
247
- <dcterms:format>
248
- <rdf:Description rdf:nodeID="N9u34589eyfdiuy8934y787d8f97sg786">
249
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
250
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">image/jpeg</rdf:value>
251
- </rdf:Description>
252
- </dcterms:format>
253
- <dcterms:isFormatOf rdf:resource="ebooks/98765"/>
254
- <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2013-03-25T20:57:55.668737</dcterms:modified>
255
- </pgterms:file>
256
- </dcterms:hasFormat>
257
- <pgterms:marc901>http://www.gutenberg.org/files/98765/98765-h/images/cover.jpg</pgterms:marc901>
258
- <pgterms:marc901>file:///public/vhost/g/gutenberg/html/files/98765/98765-h/images/cover.jpg</pgterms:marc901>
259
- <pgterms:marc901>file:///public/vhost/g/gutenberg/html/files/98765/98765-rst/images/cover.jpg</pgterms:marc901>
260
- <dcterms:hasFormat>
261
- <pgterms:file rdf:about="http://www.gutenberg.org/cache/epub/98765/pg98765.cover.medium.jpg">
262
- <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2013-03-25T20:57:55.889736</dcterms:modified>
263
- <dcterms:isFormatOf rdf:resource="ebooks/98765"/>
264
- <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10856</dcterms:extent>
265
- <dcterms:format>
266
- <rdf:Description rdf:nodeID="N8df89ys8993p4qu89uenf89dusp38a07">
267
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
268
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">image/jpeg</rdf:value>
269
- </rdf:Description>
270
- </dcterms:format>
271
- </pgterms:file>
272
- </dcterms:hasFormat>
273
- </pgterms:ebook>
274
- </rdf:RDF>'
275
- end
276
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
277
-
278
- it "expects the correct number of entries returned" do
279
- expect(rdf.covers.count).to be 4
280
- end
281
- it "expect medium cover url to be first in the list" do
282
- expect(rdf.covers[0]).to eql 'http://www.gutenberg.org/cache/epub/98765/pg98765.cover.medium.jpg'
283
- end
284
- it "expect the small cover url after the medium" do
285
- expect(rdf.covers[1]).to eql 'http://www.gutenberg.org/cache/epub/98765/pg98765.cover.small.jpg'
286
- end
287
- it "expects any other images to be listed after the official ones" do
288
- expect(rdf.covers[2]).to eql 'http://www.gutenberg.org/files/98765/98765-h/images/cover.jpg'
289
- end
290
- end
291
-
292
- describe "HTML ebook cover image" do
293
- let(:xml) do
294
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
295
- <pgterms:ebook rdf:about="ebooks/98765">
296
- <pgterms:marc901>file:///public/vhost/g/gutenberg/html/files/98765/98765-rst/images/cover.jpg</pgterms:marc901>
297
- <pgterms:marc901>file:///public/vhost/g/gutenberg/html/files/98765/98765-h/images/cover.jpg</pgterms:marc901>
298
- <pgterms:marc901>http://www.gutenberg.org/files/98765/98765-h/images/cover.jpg</pgterms:marc901>
299
- </pgterms:ebook>
300
- </rdf:RDF>'
301
- end
302
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
303
-
304
- it "expects only unique entries" do
305
- expect(rdf.covers.count).to be 2
306
- end
307
- it "should convert File URIs to the Gutenberg URL" do
308
- expect(rdf.covers.first).to match 'http://www.gutenberg.org'
309
- end
310
- it "expects the HTML cover to be listed first" do
311
- expect(rdf.covers[0]).to eql 'http://www.gutenberg.org/files/98765/98765-h/images/cover.jpg'
312
- end
313
- it "expects the RST cover to be listed after the HTML" do
314
- expect(rdf.covers[1]).to eql 'http://www.gutenberg.org/files/98765/98765-rst/images/cover.jpg'
315
- end
316
- end
317
- end
318
-
319
- describe "#ebook" do
320
- let(:xml) do
321
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
322
- <pgterms:ebook rdf:about="ebooks/98765">
323
- <dcterms:hasFormat>
324
- <pgterms:file rdf:about="http://www.gutenberg.org/ebooks/98765.txt.utf-8">
325
- <dcterms:isFormatOf rdf:resource="ebooks/98765"/>
326
- <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">293684</dcterms:extent>
327
- <dcterms:format>
328
- <rdf:Description rdf:nodeID="N87dfy78yd78s6gsg6f8970d76g0f6d9b">
329
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">text/plain</rdf:value>
330
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
331
- </rdf:Description>
332
- </dcterms:format>
333
- <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-02-16T08:29:52.373092</dcterms:modified>
334
- </pgterms:file>
335
- </dcterms:hasFormat>
336
- <dcterms:hasFormat>
337
- <pgterms:file rdf:about="http://www.gutenberg.org/files/98765/98765.zip">
338
- <dcterms:format>
339
- <rdf:Description rdf:nodeID="Ndfsd78tf34tukjehdsouyo4yrefh6dea">
340
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">application/zip</rdf:value>
341
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
342
- </rdf:Description>
343
- </dcterms:format>
344
- <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2006-09-28T12:37:26</dcterms:modified>
345
- <dcterms:format>
346
- <rdf:Description rdf:nodeID="Nfy7we43yhluwe9syrqyp2ewufy0f6d1e">
347
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">text/plain; charset=us-ascii</rdf:value>
348
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
349
- </rdf:Description>
350
- </dcterms:format>
351
- <dcterms:isFormatOf rdf:resource="ebooks/98765"/>
352
- <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">116685</dcterms:extent>
353
- </pgterms:file>
354
- </dcterms:hasFormat>
355
- </pgterms:ebook>
356
- </rdf:RDF>'
357
- end
358
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
359
-
360
- it "expects the correct number of entries" do
361
- expect(rdf.ebooks.count).to be 2
362
- end
363
- it "expects an entry to be a Media class" do
364
- expect(rdf.ebooks.first).to be_an_instance_of Rdf::Media
365
- end
366
-
367
- context "only collect ebook media files" do
368
- let(:xml) do
369
- '<rdf:RDF xml:base="http://www.gutenberg.org/" xmlns:cc="http://web.resource.org/cc/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:pgterms="http://www.gutenberg.org/2009/pgterms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
370
- <pgterms:ebook rdf:about="ebooks/98765">
371
- <dcterms:hasFormat>
372
- <pgterms:file rdf:about="http://www.gutenberg.org/ebooks/98765.txt.utf-8">
373
- <dcterms:isFormatOf rdf:resource="ebooks/98765"/>
374
- <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">293684</dcterms:extent>
375
- <dcterms:format>
376
- <rdf:Description rdf:nodeID="N87dfy78yd78s6gsg6f8970d76g0f6d9b">
377
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">text/plain</rdf:value>
378
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
379
- </rdf:Description>
380
- </dcterms:format>
381
- <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-02-16T08:29:52.373092</dcterms:modified>
382
- </pgterms:file>
383
- </dcterms:hasFormat>
384
- <dcterms:hasFormat>
385
- <pgterms:file rdf:about="http://www.gutenberg.org/cache/epub/98765/pg98765.cover.small.jpg">
386
- <dcterms:extent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">2699</dcterms:extent>
387
- <dcterms:format>
388
- <rdf:Description rdf:nodeID="N9u34589eyfdiuy8934y787d8f97sg786">
389
- <dcam:memberOf rdf:resource="http://purl.org/dc/terms/IMT"/>
390
- <rdf:value rdf:datatype="http://purl.org/dc/terms/IMT">image/jpeg</rdf:value>
391
- </rdf:Description>
392
- </dcterms:format>
393
- <dcterms:isFormatOf rdf:resource="ebooks/98765"/>
394
- <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2013-03-25T20:57:55.668737</dcterms:modified>
395
- </pgterms:file>
396
- </dcterms:hasFormat>
397
- </pgterms:ebook>
398
- </rdf:RDF>'
399
- end
400
- let(:rdf) { Rdf.new(REXML::Document.new(xml)) }
401
-
402
- it "only extracts one media file" do
403
- expect(rdf.ebooks.count).to be 1
404
- end
405
- it "expects the media type to be for an ebook" do
406
- expect(rdf.ebooks[0].media_type).to eq 'text/plain'
407
- end
408
- end
409
- end
410
- end
411
- end
@@ -1,16 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module GutenbergRdf
4
- describe ".parse" do
5
- let(:file) { StringIO.new('<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#"><pgterms:ebook rdf:about="ebooks/98765"/></rdf:RDF>') }
6
-
7
- it "expects an Rdf object" do
8
- File.stub(:new).and_return(file)
9
- book = GutenbergRdf.parse(file)
10
-
11
- expect(book.class).to be Rdf
12
- expect(book.id).to eql '98765'
13
- end
14
-
15
- end
16
- end
data/spec/spec_helper.rb DELETED
@@ -1,9 +0,0 @@
1
- require 'gutenberg_rdf'
2
-
3
- RSpec.configure do |config|
4
- config.mock_with :rspec
5
- config.treat_symbols_as_metadata_keys_with_true_values = true
6
- config.run_all_when_everything_filtered = true
7
- config.filter_run :focus
8
- config.order = 'random'
9
- end