relaton 1.19.1 → 1.19.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/relaton/db.rb +8 -7
- data/lib/relaton/registry.rb +15 -5
- data/lib/relaton/version.rb +1 -1
- data/spec/relaton/processor_spec.rb +4 -4
- data/spec/relaton_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7df2abbb732f8ab1fedc92f73e6f313af63075e1cf8f5e0cab2883d7abeaa448
|
4
|
+
data.tar.gz: 8915346acdf65d4a129da2b982b07429a5d4c5352874c230adf3189c670d677c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3978d4e5a0e4ab36f49998140d18b9d57e3bce51c943c294fabf04ca16314ebe55cd470fc4de791d9a0c5c274cff0b7fdb889a3d3ca0ebb868cc4a4bcb154d86
|
7
|
+
data.tar.gz: 86462982a81ebde5250a3b3c2b95d5f6b9859af635a2a624276af15272f7479a95372de8336d9507ddd150e2af9c684b35de3c85e5ffc29ec4044ffefb79ff5d
|
data/lib/relaton/db.rb
CHANGED
@@ -28,6 +28,7 @@ module Relaton
|
|
28
28
|
@db&.clear
|
29
29
|
@local_db&.clear
|
30
30
|
@registry.processors.each_value do |p|
|
31
|
+
require p.short.to_s
|
31
32
|
p.remove_index_file if p.respond_to? :remove_index_file
|
32
33
|
end
|
33
34
|
end
|
@@ -59,7 +60,7 @@ module Relaton
|
|
59
60
|
def fetch(text, year = nil, opts = {})
|
60
61
|
reference = text.strip
|
61
62
|
stdclass = @registry.class_by_ref(reference) || return
|
62
|
-
processor = @registry
|
63
|
+
processor = @registry[stdclass]
|
63
64
|
ref = if processor.respond_to?(:urn_to_code)
|
64
65
|
processor.urn_to_code(reference)&.first
|
65
66
|
else reference
|
@@ -105,7 +106,7 @@ module Relaton
|
|
105
106
|
stdclass = @registry.class_by_ref ref
|
106
107
|
if stdclass
|
107
108
|
unless @queues[stdclass]
|
108
|
-
processor = @registry
|
109
|
+
processor = @registry[stdclass]
|
109
110
|
threads = ENV["RELATON_FETCH_PARALLEL"]&.to_i || processor.threads
|
110
111
|
wp = WorkersPool.new(threads) do |args|
|
111
112
|
args[3].call fetch(*args[0..2])
|
@@ -157,7 +158,7 @@ module Relaton
|
|
157
158
|
def docid_type(code)
|
158
159
|
stdclass = @registry.class_by_ref(code) or return [nil, code]
|
159
160
|
_, code = strip_id_wrapper(code, stdclass)
|
160
|
-
[@registry
|
161
|
+
[@registry[stdclass].idtype, code]
|
161
162
|
end
|
162
163
|
|
163
164
|
# @param key [String]
|
@@ -293,7 +294,7 @@ module Relaton
|
|
293
294
|
else return
|
294
295
|
end
|
295
296
|
|
296
|
-
doc = @registry
|
297
|
+
doc = @registry[stdclass].hash_to_bib docid: { id: code }
|
297
298
|
ref = refs[0]
|
298
299
|
updates = check_bibliocache(refs[0], year, opts, stdclass)
|
299
300
|
if updates
|
@@ -336,7 +337,7 @@ module Relaton
|
|
336
337
|
# @param stdClass [Symbol]
|
337
338
|
# @return [Array]
|
338
339
|
def strip_id_wrapper(code, stdclass)
|
339
|
-
prefix = @registry
|
340
|
+
prefix = @registry[stdclass].prefix
|
340
341
|
code = code.sub(/\u2013/, "-").sub(/^#{prefix}\((.+)\)$/, "\\1")
|
341
342
|
[prefix, code]
|
342
343
|
end
|
@@ -355,7 +356,7 @@ module Relaton
|
|
355
356
|
# RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
|
356
357
|
def bib_retval(entry, stdclass)
|
357
358
|
if entry && !entry.match?(/^not_found/)
|
358
|
-
@registry
|
359
|
+
@registry[stdclass].from_xml(entry)
|
359
360
|
end
|
360
361
|
end
|
361
362
|
|
@@ -443,7 +444,7 @@ module Relaton
|
|
443
444
|
end
|
444
445
|
|
445
446
|
def fetch_entry(code, year, opts, stdclass, **args)
|
446
|
-
processor = @registry
|
447
|
+
processor = @registry[stdclass]
|
447
448
|
bib = net_retry(code, year, opts, processor, opts.fetch(:retries, 1))
|
448
449
|
|
449
450
|
entry = check_entry(bib, stdclass, **args)
|
data/lib/relaton/registry.rb
CHANGED
@@ -26,7 +26,6 @@ module Relaton
|
|
26
26
|
# Util.info("Info: detecting backends:")
|
27
27
|
|
28
28
|
SUPPORTED_GEMS.each do |b|
|
29
|
-
require b
|
30
29
|
require "#{b}/processor"
|
31
30
|
register Kernel.const_get "#{camel_case(b)}::Processor"
|
32
31
|
rescue LoadError => e
|
@@ -61,7 +60,7 @@ module Relaton
|
|
61
60
|
# @return [Relaton::Processor, nil]
|
62
61
|
#
|
63
62
|
def find_processor_by_dataset(dataset)
|
64
|
-
processors.values.detect { |p| p.datasets&.include? dataset }
|
63
|
+
require_gem(processors.values.detect { |p| p.datasets&.include? dataset })
|
65
64
|
end
|
66
65
|
|
67
66
|
#
|
@@ -73,7 +72,18 @@ module Relaton
|
|
73
72
|
# RelatonGb::Processor, RelatonOgc::Processor,
|
74
73
|
# RelatonCalconnect::Processor]
|
75
74
|
def by_type(type)
|
76
|
-
processors.values.detect { |v| v.prefix == type&.upcase }
|
75
|
+
require_gem(processors.values.detect { |v| v.prefix == type&.upcase })
|
76
|
+
end
|
77
|
+
|
78
|
+
def [](stdclass)
|
79
|
+
require_gem processors[stdclass]
|
80
|
+
end
|
81
|
+
|
82
|
+
def require_gem(processor)
|
83
|
+
return unless processor
|
84
|
+
|
85
|
+
require processor.short.to_s
|
86
|
+
processor
|
77
87
|
end
|
78
88
|
|
79
89
|
#
|
@@ -84,7 +94,7 @@ module Relaton
|
|
84
94
|
# @return [Relaton::Processor] processor
|
85
95
|
#
|
86
96
|
def processor_by_ref(ref)
|
87
|
-
|
97
|
+
require_gem processors[class_by_ref(ref)]
|
88
98
|
end
|
89
99
|
|
90
100
|
#
|
@@ -95,7 +105,7 @@ module Relaton
|
|
95
105
|
# @return [Symbol, nil] standard class name
|
96
106
|
#
|
97
107
|
def class_by_ref(ref)
|
98
|
-
ref = ref
|
108
|
+
ref = ref =~ /^\w+\((.*)\)$/ ? Regexp.last_match(1) : ref
|
99
109
|
@processors.each do |class_name, processor|
|
100
110
|
return class_name if /^(urn:)?#{processor.prefix}\b/i.match?(ref) ||
|
101
111
|
processor.defaultprefix.match(ref)
|
data/lib/relaton/version.rb
CHANGED
@@ -17,7 +17,7 @@ RSpec.describe Relaton::Processor do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "fetch_data method should be implemented" do
|
20
|
-
expect { subject.fetch_data "
|
20
|
+
expect { subject.fetch_data "source", {} }.to raise_error StandardError
|
21
21
|
end
|
22
22
|
|
23
23
|
it "from_xml method should be implemented" do
|
@@ -43,7 +43,7 @@ RSpec.describe Relaton::Processor do
|
|
43
43
|
|
44
44
|
it "get method should call get method of #{flavor}" do
|
45
45
|
expect(bibliography).to receive(:get).with("code", nil, {}).and_return :item
|
46
|
-
expect(processor.get
|
46
|
+
expect(processor.get("code", nil, {})).to eq :item
|
47
47
|
end
|
48
48
|
|
49
49
|
it "grammar_hash method should call grammar_hash method of #{flavor}" do
|
@@ -58,7 +58,7 @@ RSpec.describe Relaton::Processor do
|
|
58
58
|
|
59
59
|
it "fetch_data method should call fetch_data method of #{flavor}" do
|
60
60
|
expect(fetcher_class).to receive(:fetch).with(output: "dir", format: "bibxml").and_return :item
|
61
|
-
expect(processor.fetch_data
|
61
|
+
expect(processor.fetch_data(source, output: "dir", format: "bibxml")).to eq :item
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -68,7 +68,7 @@ RSpec.describe Relaton::Processor do
|
|
68
68
|
|
69
69
|
it "from_xml method should call from_xml method of #{flavor}" do
|
70
70
|
expect(parser_class).to receive(:from_xml).with("xml").and_return :item
|
71
|
-
expect(processor.from_xml
|
71
|
+
expect(processor.from_xml("xml")).to eq :item
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
data/spec/relaton_spec.rb
CHANGED
@@ -490,7 +490,7 @@ RSpec.describe Relaton::Db do
|
|
490
490
|
it "should clear cache if version is changed" do
|
491
491
|
expect(File.read("testcache/iso/version", encoding: "UTF-8")).not_to eq "new_version"
|
492
492
|
expect(File.read("testcache2/iso/version", encoding: "UTF-8")).not_to eq "new_version"
|
493
|
-
processor = double
|
493
|
+
processor = double "processor", short: :relaton_iso
|
494
494
|
expect(processor).to receive(:grammar_hash).and_return("new_version").exactly(2).times
|
495
495
|
expect(Relaton::Registry.instance).to receive(:by_type).and_return(processor).exactly(2).times
|
496
496
|
Relaton::Db.new "testcache", "testcache2"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.19.
|
4
|
+
version: 1.19.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: relaton-3gpp
|