relaton 1.9.0 → 1.9.4
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/docs/README.adoc +6 -5
- data/lib/relaton/db.rb +7 -3
- data/lib/relaton/processor.rb +13 -2
- data/lib/relaton/registry.rb +12 -1
- data/lib/relaton/version.rb +1 -1
- data/relaton.gemspec +5 -4
- data/spec/relaton/db_spec.rb +4 -2
- data/spec/relaton/processor_spec.rb +4 -0
- data/spec/relaton/{regirtry_spec.rb → registry_spec.rb} +10 -0
- data/spec/relaton_spec.rb +27 -13
- data/spec/vcr_cassetes/async_fetch.yml +1397 -1400
- data/spec/vcr_cassetes/bsi_bs_en_iso_8848.yml +16 -20
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +16 -16
- data/spec/vcr_cassetes/cen_en_10160_1999.yml +42 -42
- data/spec/vcr_cassetes/cie_001_1980.yml +8 -8
- data/spec/vcr_cassetes/ecma_6.yml +8 -8
- data/spec/vcr_cassetes/fisp_140.yml +6 -57
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +6 -6
- data/spec/vcr_cassetes/iana_service_names_port_numbers.yml +75 -0
- data/spec/vcr_cassetes/iec_60050_102_2007.yml +28 -28
- data/spec/vcr_cassetes/iec_combined_included.yml +94 -92
- data/spec/vcr_cassetes/ieee_528_2019.yml +19 -19
- data/spec/vcr_cassetes/iho_b_11.yml +8 -8
- data/spec/vcr_cassetes/iso_111111119115_1.yml +4 -4
- data/spec/vcr_cassetes/iso_19115_1.yml +16 -16
- data/spec/vcr_cassetes/iso_19115_1_2.yml +32 -32
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +16 -16
- data/spec/vcr_cassetes/iso_19133_2005.yml +16 -16
- data/spec/vcr_cassetes/iso_cd_14093.yml +202 -0
- data/spec/vcr_cassetes/iso_combined_applied.yml +34 -34
- data/spec/vcr_cassetes/iso_combined_included.yml +32 -32
- data/spec/vcr_cassetes/itu_combined_included.yml +303 -187
- data/spec/vcr_cassetes/ogc_19_025r1.yml +14 -13156
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +4 -4
- data/spec/vcr_cassetes/rfc_8341.yml +8 -8
- data/spec/vcr_cassetes/sp_800_38b.yml +6 -57
- data/spec/vcr_cassetes/un_rtade_cefact_2004_32.yml +34 -34
- data/spec/vcr_cassetes/w3c_json_ld11.yml +93 -138
- metadata +27 -12
- data/spec/vcr_cassetes/iso_awi_14093.yml +0 -202
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 250207e6a1eaa872380c5b959d727be909d99874797832a4288a058259e96bb2
|
|
4
|
+
data.tar.gz: df287ddd627ff37b9ecbcd3207a4eb8216690b9d3df9db2a9b31ff2a3648a363
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 75eecbdaa0c5d6bc954b790eecba13d987974be787181332343b23558534543fb4107366444fe49aab6fea2e54830dc46051449f482d494a9afad0f3bd502abf
|
|
7
|
+
data.tar.gz: 159b1e402d0b8521634598412edb68cf8e468009d24e96be56f678df98a62099b568d8de04c77a10ed72faed770f4d87d536fd1e152fa24f39786540d5e51643
|
data/docs/README.adoc
CHANGED
|
@@ -182,20 +182,21 @@ x = db.fetch_db("ISO 5749")
|
|
|
182
182
|
# prepare queue for results
|
|
183
183
|
results = Queue.new
|
|
184
184
|
|
|
185
|
-
# references
|
|
185
|
+
# references to fetch
|
|
186
186
|
refs = ["ISO 19011", "ISO 19115"]
|
|
187
187
|
|
|
188
188
|
# fetch documents
|
|
189
189
|
refs.each do |ref|
|
|
190
190
|
db.fetch_async(ref) do |doc|
|
|
191
|
-
results << [
|
|
191
|
+
results << [doc, ref]
|
|
192
192
|
end
|
|
193
193
|
end
|
|
194
194
|
|
|
195
|
-
# wait until
|
|
195
|
+
# wait until all the documents fetching
|
|
196
196
|
refs.size.times do
|
|
197
|
-
|
|
198
|
-
# do
|
|
197
|
+
doc, ref = results.pop
|
|
198
|
+
# do whatever you need with the result
|
|
199
|
+
# in case request error doc will be instance of Relaton::RequestError
|
|
199
200
|
end
|
|
200
201
|
----
|
|
201
202
|
|
data/lib/relaton/db.rb
CHANGED
|
@@ -99,16 +99,20 @@ module Relaton
|
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
# Fetch asynchronously
|
|
102
|
-
def fetch_async(code, year = nil, opts = {}, &
|
|
102
|
+
def fetch_async(code, year = nil, opts = {}, &block) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
103
103
|
stdclass = standard_class code
|
|
104
104
|
if stdclass
|
|
105
105
|
unless @queues[stdclass]
|
|
106
106
|
processor = @registry.processors[stdclass]
|
|
107
|
-
wp = WorkersPool.new(processor.threads)
|
|
107
|
+
wp = WorkersPool.new(processor.threads) do |args|
|
|
108
|
+
args[3].call fetch(*args[0..2])
|
|
109
|
+
rescue RelatonBib::RequestError => e
|
|
110
|
+
args[3].call e
|
|
111
|
+
end
|
|
108
112
|
@queues[stdclass] = { queue: Queue.new, workers_pool: wp }
|
|
109
113
|
Thread.new { process_queue @queues[stdclass] }
|
|
110
114
|
end
|
|
111
|
-
@queues[stdclass][:queue] << [code, year, opts]
|
|
115
|
+
@queues[stdclass][:queue] << [code, year, opts, block]
|
|
112
116
|
else yield nil
|
|
113
117
|
end
|
|
114
118
|
end
|
data/lib/relaton/processor.rb
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
module Relaton
|
|
2
2
|
class Processor
|
|
3
|
+
# @rerurn [Symbol]
|
|
3
4
|
attr_reader :short
|
|
4
|
-
|
|
5
|
+
|
|
6
|
+
# @return [String]
|
|
7
|
+
attr_reader :prefix, :idtype
|
|
8
|
+
|
|
9
|
+
# @return [Regexp]
|
|
5
10
|
attr_reader :defaultprefix
|
|
6
|
-
|
|
11
|
+
|
|
12
|
+
# @return [Array<String>]
|
|
13
|
+
attr_reader :datasets
|
|
7
14
|
|
|
8
15
|
def initialize
|
|
9
16
|
raise "This is an abstract class!"
|
|
@@ -13,6 +20,10 @@ module Relaton
|
|
|
13
20
|
raise "This is an abstract class!"
|
|
14
21
|
end
|
|
15
22
|
|
|
23
|
+
def fetch_data(_source, _opts)
|
|
24
|
+
raise "This is an abstract class!"
|
|
25
|
+
end
|
|
26
|
+
|
|
16
27
|
def from_xml(_xml)
|
|
17
28
|
raise "This is an abstract class!"
|
|
18
29
|
end
|
data/lib/relaton/registry.rb
CHANGED
|
@@ -9,7 +9,7 @@ module Relaton
|
|
|
9
9
|
relaton_gb relaton_iec relaton_ietf relaton_iso relaton_itu relaton_nist
|
|
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
|
-
relaton_cen
|
|
12
|
+
relaton_cen relaton_iana
|
|
13
13
|
].freeze
|
|
14
14
|
|
|
15
15
|
include Singleton
|
|
@@ -54,6 +54,17 @@ module Relaton
|
|
|
54
54
|
processors.keys
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
#
|
|
58
|
+
# Search a rpocessos by dataset name
|
|
59
|
+
#
|
|
60
|
+
# @param [String] dataset
|
|
61
|
+
#
|
|
62
|
+
# @return [Relaton::Processor, nil]
|
|
63
|
+
#
|
|
64
|
+
def find_processor_by_dataset(dataset)
|
|
65
|
+
processors.values.detect { |p| p.datasets&.include? dataset }
|
|
66
|
+
end
|
|
67
|
+
|
|
57
68
|
#
|
|
58
69
|
# Find processor by type
|
|
59
70
|
#
|
data/lib/relaton/version.rb
CHANGED
data/relaton.gemspec
CHANGED
|
@@ -36,13 +36,14 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_dependency "relaton-cie", "~> 1.9.0"
|
|
37
37
|
spec.add_dependency "relaton-ecma", "~> 1.9.0"
|
|
38
38
|
spec.add_dependency "relaton-gb", "~> 1.9.0"
|
|
39
|
-
spec.add_dependency "relaton-
|
|
39
|
+
spec.add_dependency "relaton-iana", "~> 1.9.0"
|
|
40
|
+
spec.add_dependency "relaton-iec", "~> 1.9.0"
|
|
40
41
|
spec.add_dependency "relaton-ieee", "~> 1.9.0"
|
|
41
42
|
spec.add_dependency "relaton-ietf", "~> 1.9.0"
|
|
42
43
|
spec.add_dependency "relaton-iho", "~> 1.9.0"
|
|
43
|
-
spec.add_dependency "relaton-iso", "
|
|
44
|
-
spec.add_dependency "relaton-itu", "
|
|
45
|
-
spec.add_dependency "relaton-nist", ">= 1.9.
|
|
44
|
+
spec.add_dependency "relaton-iso", "~> 1.9.0"
|
|
45
|
+
spec.add_dependency "relaton-itu", "~> 1.9.0"
|
|
46
|
+
spec.add_dependency "relaton-nist", ">= 1.9.2"
|
|
46
47
|
spec.add_dependency "relaton-ogc", "~> 1.9.0"
|
|
47
48
|
spec.add_dependency "relaton-omg", "~> 1.9.0"
|
|
48
49
|
spec.add_dependency "relaton-un", "~> 1.9.0"
|
data/spec/relaton/db_spec.rb
CHANGED
|
@@ -163,14 +163,16 @@ RSpec.describe Relaton::Db do
|
|
|
163
163
|
results = []
|
|
164
164
|
VCR.use_cassette "async_fetch", match_requests_on: %i[method uri body] do
|
|
165
165
|
refs.each do |ref|
|
|
166
|
-
db.fetch_async(ref)
|
|
166
|
+
db.fetch_async(ref) do |r|
|
|
167
|
+
queue << [r, ref]
|
|
168
|
+
end
|
|
167
169
|
end
|
|
168
170
|
Timeout.timeout(60) do
|
|
169
171
|
refs.size.times { results << queue.pop }
|
|
170
172
|
end
|
|
171
173
|
end
|
|
172
174
|
results.each do |result|
|
|
173
|
-
expect(result).to be_instance_of RelatonItu::ItuBibliographicItem
|
|
175
|
+
expect(result[0]).to be_instance_of RelatonItu::ItuBibliographicItem
|
|
174
176
|
end
|
|
175
177
|
end
|
|
176
178
|
|
|
@@ -16,6 +16,10 @@ RSpec.describe Relaton::Processor do
|
|
|
16
16
|
expect { subject.get "code", nil, {} }.to raise_error StandardError
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
it "fetch_data method should be implemented" do
|
|
20
|
+
expect { subject.fetch_data "cource", {} }.to raise_error StandardError
|
|
21
|
+
end
|
|
22
|
+
|
|
19
23
|
it "from_xml method should be implemented" do
|
|
20
24
|
expect { subject.from_xml "" }.to raise_error StandardError
|
|
21
25
|
end
|
|
@@ -87,5 +87,15 @@ RSpec.describe Relaton::Registry do
|
|
|
87
87
|
it "CEN" do
|
|
88
88
|
expect(Relaton::Registry.instance.by_type("CEN")).to be_instance_of RelatonCen::Processor
|
|
89
89
|
end
|
|
90
|
+
|
|
91
|
+
it "IANA" do
|
|
92
|
+
expect(Relaton::Registry.instance.by_type("IANA")).to be_instance_of RelatonIana::Processor
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "find processot by dataset" do
|
|
97
|
+
expect(Relaton::Registry.instance
|
|
98
|
+
.find_processor_by_dataset("nist-tech-pubs"))
|
|
99
|
+
.to be_instance_of RelatonNist::Processor
|
|
90
100
|
end
|
|
91
101
|
end
|
data/spec/relaton_spec.rb
CHANGED
|
@@ -59,10 +59,10 @@ RSpec.describe Relaton::Db do
|
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
it "gets sn ISO/
|
|
63
|
-
VCR.use_cassette "
|
|
64
|
-
bib = @db.fetch "ISO/
|
|
65
|
-
expect(bib.docidentifier[0].id).to eq "ISO/
|
|
62
|
+
it "gets sn ISO/CD reference" do
|
|
63
|
+
VCR.use_cassette "iso_cd_14093" do
|
|
64
|
+
bib = @db.fetch "ISO/CD 14093"
|
|
65
|
+
expect(bib.docidentifier[0].id).to eq "ISO/CD 14093"
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
end
|
|
@@ -204,6 +204,13 @@ RSpec.describe Relaton::Db do
|
|
|
204
204
|
end
|
|
205
205
|
|
|
206
206
|
it "get OGC refrence and cache it" do
|
|
207
|
+
cc_fr = /\.relaton\/ogc\/bibliography\.json/
|
|
208
|
+
allow(File).to receive(:exist?).with(cc_fr).and_return false
|
|
209
|
+
allow(File).to receive(:exist?).with(/etag\.txt/).and_return false
|
|
210
|
+
expect(File).to receive(:exist?).and_call_original.at_least :once
|
|
211
|
+
expect(File).to receive(:write).with(cc_fr, kind_of(String), kind_of(Hash))
|
|
212
|
+
.at_most :once
|
|
213
|
+
allow(File).to receive(:write).and_call_original
|
|
207
214
|
VCR.use_cassette "ogc_19_025r1" do
|
|
208
215
|
bib = @db.fetch "OGC 19-025r1", nil, {}
|
|
209
216
|
expect(bib).to be_instance_of RelatonOgc::OgcBibliographicItem
|
|
@@ -239,13 +246,13 @@ RSpec.describe Relaton::Db do
|
|
|
239
246
|
end
|
|
240
247
|
|
|
241
248
|
it "get W3C reference" do
|
|
242
|
-
w3c_fr = /\.relaton\/w3c\/bibliography\.yml/
|
|
243
|
-
expect(File).to receive(:exist?).with(w3c_fr).and_return false
|
|
244
|
-
expect(File).to receive(:exist?).and_call_original.at_least :once
|
|
245
|
-
expect(File).to receive(:write).with w3c_fr, kind_of(String), kind_of(Hash)
|
|
249
|
+
# w3c_fr = /\.relaton\/w3c\/bibliography\.yml/
|
|
250
|
+
# expect(File).to receive(:exist?).with(w3c_fr).and_return false
|
|
251
|
+
# expect(File).to receive(:exist?).and_call_original.at_least :once
|
|
252
|
+
# expect(File).to receive(:write).with w3c_fr, kind_of(String), kind_of(Hash)
|
|
246
253
|
# expect(File).to receive(:write).and_call_original.at_least :once
|
|
247
254
|
VCR.use_cassette "w3c_json_ld11" do
|
|
248
|
-
bib = @db.fetch "W3C
|
|
255
|
+
bib = @db.fetch "W3C REC-json-ld11-20200716", nil, {}
|
|
249
256
|
expect(bib).to be_instance_of RelatonW3c::W3cBibliographicItem
|
|
250
257
|
end
|
|
251
258
|
end
|
|
@@ -292,6 +299,13 @@ RSpec.describe Relaton::Db do
|
|
|
292
299
|
end
|
|
293
300
|
end
|
|
294
301
|
|
|
302
|
+
it "get IANA reference" do
|
|
303
|
+
VCR.use_cassette "iana_service_names_port_numbers" do
|
|
304
|
+
bib = @db.fetch "IANA service-names-port-numbers"
|
|
305
|
+
expect(bib).to be_instance_of RelatonBib::BibliographicItem
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
|
|
295
309
|
context "get combined documents" do
|
|
296
310
|
context "ISO" do
|
|
297
311
|
it "included" do
|
|
@@ -299,10 +313,10 @@ RSpec.describe Relaton::Db do
|
|
|
299
313
|
bib = @db.fetch "ISO 19115-1 + Amd 1"
|
|
300
314
|
expect(bib.docidentifier[0].id).to eq "ISO 19115-1 + Amd 1"
|
|
301
315
|
expect(bib.relation[0].type).to eq "updates"
|
|
302
|
-
expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "ISO 19115-1
|
|
316
|
+
expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "ISO 19115-1"
|
|
303
317
|
expect(bib.relation[1].type).to eq "derivedFrom"
|
|
304
318
|
expect(bib.relation[1].description).to be_nil
|
|
305
|
-
expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ISO 19115-1
|
|
319
|
+
expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ISO 19115-1/Amd 1:2018"
|
|
306
320
|
end
|
|
307
321
|
end
|
|
308
322
|
|
|
@@ -311,10 +325,10 @@ RSpec.describe Relaton::Db do
|
|
|
311
325
|
bib = @db.fetch "ISO 19115-1, Amd 1"
|
|
312
326
|
expect(bib.docidentifier[0].id).to eq "ISO 19115-1, Amd 1"
|
|
313
327
|
expect(bib.relation[0].type).to eq "updates"
|
|
314
|
-
expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "ISO 19115-1
|
|
328
|
+
expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "ISO 19115-1"
|
|
315
329
|
expect(bib.relation[1].type).to eq "complements"
|
|
316
330
|
expect(bib.relation[1].description.content).to eq "amendment"
|
|
317
|
-
expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ISO 19115-1
|
|
331
|
+
expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ISO 19115-1/Amd 1:2018"
|
|
318
332
|
end
|
|
319
333
|
end
|
|
320
334
|
end
|