relaton 1.15.3 → 1.15.5

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
2
  SHA256:
3
- metadata.gz: 561cb76a6c57fe6218af9c61fd2f4e9f8b27197837a74f31bac932c3be4f1693
4
- data.tar.gz: a67f390d3666ff699c655c929c3e8f40a57625836cf29990058ea26dd5eaccec
3
+ metadata.gz: 660a04548bc776f45c6675c93929f092b9b09bf787f9c5327a0e77c4657396d6
4
+ data.tar.gz: 524d02188fb9b718b051a9278f367b5ba96b1cc9b7e3f22e0ef289dc2e637104
5
5
  SHA512:
6
- metadata.gz: af3d0f60c9e68e7da9a6eff5e0cd74f829f10a55e54e0f07883f2eb13d21071290a766943a5f2eef651f22c4679359e0c5b3bb47e5d07cce315450e85d4a0093
7
- data.tar.gz: 10ee523dacfbd10297e9afecc3de1db1557abca0418c4c0e80b9686144b8196daf60eb3dfc2d6e0a7491af5db120ebab3faca3a56c072fd1d71b121dd55da388
6
+ metadata.gz: a888ab93816385d62c1a16e75dfdeeced6138793f89bd37b4b9570642c9ba6ab9fe2046185f514f0083e3a3293af4644b4e3232ef32c3786a58cc1c8afdb872a
7
+ data.tar.gz: 715fdef1a7536b2cb8e42f89bb0aaa32ff11684e38787acc58afbebd94ff93c8c017166af1b518b92e53af2fbb9375ae7907d672081aa25694d9c77d0e111744
data/Gemfile CHANGED
@@ -1,5 +1,19 @@
1
1
  source "https://rubygems.org"
2
-
2
+
3
3
  # Specify your gem's dependencies in gemspec
4
4
  gemspec
5
5
 
6
+ gem "byebug", "~> 11.0"
7
+ gem "equivalent-xml", "~> 0.6"
8
+ gem "guard", "~> 2.14"
9
+ gem "guard-rspec", "~> 4.7"
10
+ gem "pry-byebug", "~> 3.9.0"
11
+ gem "rake", "~> 13.0"
12
+ gem "rspec", "~> 3.6"
13
+ gem "rubocop", "~> 1.17.0"
14
+ gem "rubocop-performance", "~> 1.11.0"
15
+ gem "rubocop-rails", "~> 2.10.0"
16
+ gem "simplecov", "~> 0.15"
17
+ gem "timecop", "~> 0.9"
18
+ gem "vcr", "~> 6"
19
+ gem "webmock", "~> 3.18"
data/lib/relaton/db.rb CHANGED
@@ -33,11 +33,11 @@ module Relaton
33
33
  end
34
34
 
35
35
  ##
36
- # The class of reference requested is determined by the prefix of the code:
36
+ # The class of reference requested is determined by the prefix of the reference:
37
37
  # GB Standard for gbbib, IETF for ietfbib, ISO for isobib, IEC or IEV for
38
38
  # iecbib,
39
39
  #
40
- # @param code [String] the ISO standard Code to look up (e.g. "ISO 9000")
40
+ # @param text [String] the standard reference to look up (e.g. "ISO 9000")
41
41
  # @param year [String] the year the standard was published (optional)
42
42
  #
43
43
  # @param opts [Hash] options
@@ -55,14 +55,15 @@ module Relaton
55
55
  # RelatonBipm::BipmBibliographicItem, RelatonIho::IhoBibliographicItem,
56
56
  # RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
57
57
  ##
58
- def fetch(code, year = nil, opts = {})
59
- stdclass = @registry.class_by_ref(code) || return
58
+ def fetch(text, year = nil, opts = {})
59
+ reference = text.strip
60
+ stdclass = @registry.class_by_ref(reference) || return
60
61
  processor = @registry.processors[stdclass]
61
62
  ref = if processor.respond_to?(:urn_to_code)
62
- processor.urn_to_code(code)&.first
63
- else code
63
+ processor.urn_to_code(reference)&.first
64
+ else reference
64
65
  end
65
- ref ||= code
66
+ ref ||= reference
66
67
  result = combine_doc ref, year, opts, stdclass
67
68
  result || check_bibliocache(ref, year, opts, stdclass)
68
69
  end
@@ -10,6 +10,7 @@ module Relaton
10
10
  relaton_ogc relaton_calconnect relaton_omg relaton_un relaton_w3c
11
11
  relaton_ieee relaton_iho relaton_bipm relaton_ecma relaton_cie relaton_bsi
12
12
  relaton_cen relaton_iana relaton_3gpp relaton_oasis relaton_doi relaton_jis
13
+ relaton_xsf
13
14
  ].freeze
14
15
 
15
16
  include Singleton
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "1.15.3".freeze
2
+ VERSION = "1.15.5".freeze
3
3
  end
data/relaton.gemspec CHANGED
@@ -52,19 +52,5 @@ Gem::Specification.new do |spec|
52
52
  spec.add_dependency "relaton-omg", "~> 1.14.0"
53
53
  spec.add_dependency "relaton-un", "~> 1.14.0"
54
54
  spec.add_dependency "relaton-w3c", "~> 1.14.0"
55
-
56
- spec.add_development_dependency "byebug", "~> 11.0"
57
- spec.add_development_dependency "equivalent-xml", "~> 0.6"
58
- spec.add_development_dependency "guard", "~> 2.14"
59
- spec.add_development_dependency "guard-rspec", "~> 4.7"
60
- spec.add_development_dependency "pry-byebug", "~> 3.9.0"
61
- spec.add_development_dependency "rake", "~> 13.0"
62
- spec.add_development_dependency "rspec", "~> 3.6"
63
- spec.add_development_dependency "rubocop", "~> 1.17.0"
64
- spec.add_development_dependency "rubocop-performance", "~> 1.11.0"
65
- spec.add_development_dependency "rubocop-rails", "~> 2.10.0"
66
- spec.add_development_dependency "simplecov", "~> 0.15"
67
- spec.add_development_dependency "timecop", "~> 0.9"
68
- spec.add_development_dependency "vcr", "~> 6"
69
- spec.add_development_dependency "webmock"
55
+ spec.add_dependency "relaton-xsf", "~> 1.14.0"
70
56
  end
@@ -1,9 +1,8 @@
1
1
  RSpec.describe Relaton::Db do
2
2
  before(:each) { FileUtils.rm_rf %w[testcache testcache2] }
3
+ subject { Relaton::Db.new nil, nil }
3
4
 
4
5
  context "instance methods" do
5
- subject { Relaton::Db.new nil, nil }
6
-
7
6
  context "#search_edition_year" do
8
7
  it "create bibitem from YAML content" do
9
8
  h = { "docid" => [{ "id" => "ISO 123", type: "ISO", "primary" => true }] }
@@ -164,21 +163,33 @@ RSpec.describe Relaton::Db do
164
163
  expect(db.docid_type("CN(GB/T 1.1)")).to eq ["Chinese Standard", "GB/T 1.1"]
165
164
  end
166
165
 
167
- it "doesn't use cache" do
168
- db = Relaton::Db.new nil, nil
169
- docid = RelatonBib::DocumentIdentifier.new id: "ISO 19115-1", type: "ISO"
170
- item = RelatonIsoBib::IsoBibliographicItem.new docid: [docid]
171
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 19115-1", nil, {}).and_return item
172
- bib = db.fetch("ISO 19115-1", nil, {})
173
- expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
174
- end
175
-
176
- it "fetch when no local db" do
177
- db = Relaton::Db.new "testcache", nil
178
- VCR.use_cassette "iso_19115_1" do
179
- bib = db.fetch("ISO 19115-1", nil, {})
166
+ context "#fetch" do
167
+ it "doesn't use cache" do
168
+ docid = RelatonBib::DocumentIdentifier.new id: "ISO 19115-1", type: "ISO"
169
+ item = RelatonIsoBib::IsoBibliographicItem.new docid: [docid]
170
+ expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 19115-1", nil, {}).and_return item
171
+ bib = subject.fetch("ISO 19115-1", nil, {})
180
172
  expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
181
173
  end
174
+
175
+ it "when no local db" do
176
+ db = Relaton::Db.new "testcache", nil
177
+ VCR.use_cassette "iso_19115_1" do
178
+ bib = db.fetch("ISO 19115-1", nil, {})
179
+ expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
180
+ end
181
+ end
182
+
183
+ it "document with net retries" do
184
+ expect(subject.instance_variable_get(:@registry).processors[:relaton_ietf]).to receive(:get)
185
+ .and_raise(RelatonBib::RequestError).exactly(3).times
186
+ expect { subject.fetch "RFC 8341", nil, retries: 3 }.to raise_error RelatonBib::RequestError
187
+ end
188
+
189
+ it "strip reference" do
190
+ expect(subject).to receive(:combine_doc).with("ISO 19115-1", nil, {}, :relaton_iso).and_return :doc
191
+ expect(subject.fetch(" ISO 19115-1 ", nil, {})).to be :doc
192
+ end
182
193
  end
183
194
 
184
195
  it "fetch std" do
@@ -189,15 +200,7 @@ RSpec.describe Relaton::Db do
189
200
  end
190
201
  end
191
202
 
192
- it "fetch document with net retries" do
193
- db = Relaton::Db.new nil, nil
194
- expect(db.instance_variable_get(:@registry).processors[:relaton_ietf]).to receive(:get)
195
- .and_raise(RelatonBib::RequestError).exactly(3).times
196
- expect { db.fetch "RFC 8341", nil, retries: 3 }.to raise_error RelatonBib::RequestError
197
- end
198
-
199
203
  context "async fetch" do
200
- let(:db) { Relaton::Db.new nil, nil }
201
204
  let(:queue) { Queue.new }
202
205
 
203
206
  it "success" do
@@ -206,8 +209,8 @@ RSpec.describe Relaton::Db do
206
209
  "ITU-T G.780/Y.1351", "ITU-T G.711", "ITU-T G.1011"]
207
210
  results = []
208
211
  refs.each do |ref|
209
- expect(db).to receive(:fetch).with(ref, nil, {}).and_return :result
210
- db.fetch_async(ref) { |r| queue << [r, ref] }
212
+ expect(subject).to receive(:fetch).with(ref, nil, {}).and_return :result
213
+ subject.fetch_async(ref) { |r| queue << [r, ref] }
211
214
  end
212
215
  Timeout.timeout(60) { refs.size.times { results << queue.pop } }
213
216
  results.each do |result|
@@ -220,8 +223,8 @@ RSpec.describe Relaton::Db do
220
223
  "CGPM -- Réunion 9 (1948)", "CGPM -- Meeting 9 (1948)"]
221
224
  results = []
222
225
  refs.each do |ref|
223
- expect(db).to receive(:fetch).with(ref, nil, {}).and_return :result
224
- db.fetch_async(ref) { |r| queue << [r, ref] }
226
+ expect(subject).to receive(:fetch).with(ref, nil, {}).and_return :result
227
+ subject.fetch_async(ref) { |r| queue << [r, ref] }
225
228
  end
226
229
  Timeout.timeout(60) { refs.size.times { results << queue.pop } }
227
230
  results.each do |result|
@@ -232,23 +235,23 @@ RSpec.describe Relaton::Db do
232
235
  it "prefix not found" do
233
236
  result = ""
234
237
  VCR.use_cassette "rfc_unsuccess" do
235
- db.fetch_async("ABC 123456") { |r| queue << r }
238
+ subject.fetch_async("ABC 123456") { |r| queue << r }
236
239
  Timeout.timeout(5) { result = queue.pop }
237
240
  end
238
241
  expect(result).to be_nil
239
242
  end
240
243
 
241
244
  it "handle HTTP request error" do
242
- expect(db).to receive(:fetch).and_raise RelatonBib::RequestError
243
- db.fetch_async("ISO REF") { |r| queue << r }
245
+ expect(subject).to receive(:fetch).and_raise RelatonBib::RequestError
246
+ subject.fetch_async("ISO REF") { |r| queue << r }
244
247
  result = Timeout.timeout(5) { queue.pop }
245
248
  expect(result).to be_instance_of RelatonBib::RequestError
246
249
  end
247
250
 
248
251
  it "handle other errors" do
249
- expect(db).to receive(:fetch).and_raise Errno::EACCES
252
+ expect(subject).to receive(:fetch).and_raise Errno::EACCES
250
253
  expect do
251
- db.fetch_async("ISO REF") { |r| queue << r }
254
+ subject.fetch_async("ISO REF") { |r| queue << r }
252
255
  result = Timeout.timeout(5) { queue.pop }
253
256
  expect(result).to be_nil
254
257
  end.to output("[relaton] ERROR: ISO REF -- Permission denied\n").to_stderr
@@ -258,8 +261,8 @@ RSpec.describe Relaton::Db do
258
261
  expect(ENV).to receive(:[]).with("RELATON_FETCH_PARALLEL").and_return(1)
259
262
  allow(ENV).to receive(:[]).and_call_original
260
263
  expect(Relaton::WorkersPool).to receive(:new).with(1).and_call_original
261
- expect(db).to receive(:fetch).with("ITU-T G.993.5", nil, {})
262
- db.fetch_async("ITU-T G.993.5") { |r| queue << r }
264
+ expect(subject).to receive(:fetch).with("ITU-T G.993.5", nil, {})
265
+ subject.fetch_async("ITU-T G.993.5") { |r| queue << r }
263
266
  Timeout.timeout(50) { queue.pop }
264
267
  end
265
268
  end
@@ -109,6 +109,10 @@ RSpec.describe Relaton::Registry do
109
109
  it "JIS" do
110
110
  expect(Relaton::Registry.instance.by_type("JIS")).to be_instance_of RelatonJis::Processor
111
111
  end
112
+
113
+ it "XSF" do
114
+ expect(Relaton::Registry.instance.by_type("XEP")).to be_instance_of RelatonXsf::Processor
115
+ end
112
116
  end
113
117
 
114
118
  it "find processot by dataset" do
data/spec/relaton_spec.rb CHANGED
@@ -327,6 +327,24 @@ RSpec.describe Relaton::Db do
327
327
  expect(bib).to be_instance_of RelatonBib::BibliographicItem
328
328
  end
329
329
 
330
+ it "get JIS reference" do
331
+ docid = RelatonBib::DocumentIdentifier.new(id: "JIS X 0001", type: "JIS")
332
+ item = RelatonJis::BibliographicItem.new docid: [docid]
333
+ expect(RelatonJis::Bibliography).to receive(:get).with("JIS X 0001", nil, {}).and_return item
334
+ bib = @db.fetch "JIS X 0001"
335
+ expect(bib).to be_instance_of RelatonJis::BibliographicItem
336
+ expect(bib.docidentifier.first.id).to eq "JIS X 0001"
337
+ end
338
+
339
+ it "get XSF reference" do
340
+ docid = RelatonBib::DocumentIdentifier.new(id: "XEP 0001", type: "XSF")
341
+ item = RelatonXsf::BibliographicItem.new docid: [docid]
342
+ expect(RelatonXsf::Bibliography).to receive(:get).with("XEP 0001", nil, {}).and_return item
343
+ bib = @db.fetch "XEP 0001"
344
+ expect(bib).to be_instance_of RelatonXsf::BibliographicItem
345
+ expect(bib.docidentifier.first.id).to eq "XEP 0001"
346
+ end
347
+
330
348
  context "get combined documents" do
331
349
  context "ISO" do
332
350
  it "included" do