relaton 1.15.3 → 1.15.5

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
  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