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 +4 -4
- data/Gemfile +15 -1
- data/lib/relaton/db.rb +8 -7
- data/lib/relaton/registry.rb +1 -0
- data/lib/relaton/version.rb +1 -1
- data/relaton.gemspec +1 -15
- data/spec/relaton/db_spec.rb +37 -34
- data/spec/relaton/registry_spec.rb +4 -0
- data/spec/relaton_spec.rb +18 -0
- data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +11310 -8
- data/spec/vcr_cassetes/api_relaton_org.yml +8 -8
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +2076 -1899
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +25 -21
- data/spec/vcr_cassetes/cie_001_1980.yml +25 -21
- data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +9 -9
- data/spec/vcr_cassetes/ecma_6.yml +137 -132
- data/spec/vcr_cassetes/en_10160_1999.yml +9733 -9707
- data/spec/vcr_cassetes/ieee_528_2019.yml +2734 -2732
- data/spec/vcr_cassetes/iso_111111119115_1.yml +12 -11
- data/spec/vcr_cassetes/iso_19115_1.yml +2235 -2058
- data/spec/vcr_cassetes/iso_19115_1_2.yml +4322 -3967
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +2238 -2060
- data/spec/vcr_cassetes/iso_19133_2005.yml +2277 -2098
- data/spec/vcr_cassetes/iso_combined_applied.yml +4173 -3818
- data/spec/vcr_cassetes/iso_combined_included.yml +4173 -3818
- data/spec/vcr_cassetes/iso_dis.yml +1968 -1809
- data/spec/vcr_cassetes/ogc_19_025r1.yml +191 -186
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +834 -829
- data/spec/vcr_cassetes/rfc_8341.yml +110 -102
- metadata +6 -188
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 660a04548bc776f45c6675c93929f092b9b09bf787f9c5327a0e77c4657396d6
|
|
4
|
+
data.tar.gz: 524d02188fb9b718b051a9278f367b5ba96b1cc9b7e3f22e0ef289dc2e637104
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
|
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(
|
|
59
|
-
|
|
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(
|
|
63
|
-
else
|
|
63
|
+
processor.urn_to_code(reference)&.first
|
|
64
|
+
else reference
|
|
64
65
|
end
|
|
65
|
-
ref ||=
|
|
66
|
+
ref ||= reference
|
|
66
67
|
result = combine_doc ref, year, opts, stdclass
|
|
67
68
|
result || check_bibliocache(ref, year, opts, stdclass)
|
|
68
69
|
end
|
data/lib/relaton/registry.rb
CHANGED
|
@@ -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
|
data/lib/relaton/version.rb
CHANGED
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
|
data/spec/relaton/db_spec.rb
CHANGED
|
@@ -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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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(
|
|
210
|
-
|
|
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(
|
|
224
|
-
|
|
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
|
-
|
|
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(
|
|
243
|
-
|
|
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(
|
|
252
|
+
expect(subject).to receive(:fetch).and_raise Errno::EACCES
|
|
250
253
|
expect do
|
|
251
|
-
|
|
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(
|
|
262
|
-
|
|
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
|