relaton 1.19.1 → 1.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/docs/CHANGELOG.adoc +16 -0
- data/docs/VERSIONING_POLICY.adoc +38 -0
- data/lib/relaton/db.rb +8 -7
- data/lib/relaton/registry.rb +15 -5
- data/lib/relaton/version.rb +1 -1
- data/relaton.gemspec +28 -28
- data/spec/relaton/processor_spec.rb +4 -4
- data/spec/relaton_spec.rb +1 -1
- data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +12328 -12177
- data/spec/vcr_cassetes/api_relaton_org.yml +8 -8
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +9 -9
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +15 -15
- data/spec/vcr_cassetes/cie_001_1980.yml +214 -214
- data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +53 -52
- data/spec/vcr_cassetes/ecma_6.yml +22 -22
- data/spec/vcr_cassetes/en_10160_1999.yml +10444 -10371
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +415 -414
- data/spec/vcr_cassetes/ieee_528_2019.yml +2194 -2157
- data/spec/vcr_cassetes/iso_19115_1.yml +665 -31
- data/spec/vcr_cassetes/iso_19115_1_2.yml +21 -21
- data/spec/vcr_cassetes/iso_19115_1_std.yml +663 -29
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +14 -14
- data/spec/vcr_cassetes/iso_19133_2005.yml +8 -8
- data/spec/vcr_cassetes/iso_combined_applied.yml +23 -23
- data/spec/vcr_cassetes/iso_combined_included.yml +22 -22
- data/spec/vcr_cassetes/iso_dis.yml +8 -8
- data/spec/vcr_cassetes/ogc_19_025r1.yml +15 -15
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +1480 -1208
- data/spec/vcr_cassetes/rfc_8341.yml +34 -26
- metadata +63 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94a274b069b9e4fb89f9eef427cd1d8e8a15d44bb1e9f2fb216764dd68cc96a8
|
4
|
+
data.tar.gz: f52ab0985197190b47243f31ca57696df9a75d84be8db069796cbefbd477b4d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d245875f0f716ea358aaf03518f1888c6c82a36588e0f788cb761f1975e53e9025829dab57772597f233c80b8354494978de709c68c4c47b22048d4417d748fe
|
7
|
+
data.tar.gz: c0179c0e2dc4ff8c1d43a8dbdb34fe7b7d50302e24da7c4e651f09dbe1db6441a692b178c27b980264186c9a4019513dd4ae3c3c4c14c08ef278472141a9735d
|
data/docs/CHANGELOG.adoc
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
= Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on https://keepachangelog.com/en/1.0.0/[Keep a Changelog], and this project adheres to https://semver.org/[Semantic Versioning].
|
6
|
+
|
7
|
+
== [Unreleased]
|
8
|
+
|
9
|
+
== [1.19.2] - 2024-06-29
|
10
|
+
- Lazy load Relaton flavor gems dependencies.
|
11
|
+
|
12
|
+
== [1.19.1] - 2024-06-24
|
13
|
+
- Add `relaton-plateau` flavor gem.
|
14
|
+
|
15
|
+
== [1.19.0] - 2024-06-29
|
16
|
+
- Switch to using the `relaton-logger` gem for logging.
|
@@ -0,0 +1,38 @@
|
|
1
|
+
= Versioning Policy
|
2
|
+
|
3
|
+
This document describes the versioning policy for the Relaton project. We follow the https://semver.org/[Semantic Versioning] scheme.
|
4
|
+
|
5
|
+
== Versioning Scheme
|
6
|
+
|
7
|
+
Version nubmers are in the form of `MAJOR.MINOR.PATCH`. The version number is incremented based on the following:
|
8
|
+
|
9
|
+
- `MAJOR` version is incremented when incompatible changes are made to the API.
|
10
|
+
- `MINOR` version is incremented when the Relaton data model is changed.
|
11
|
+
- `PATCH` version is incremented when backward-compatible bug fixes are made.
|
12
|
+
|
13
|
+
== Rules for incrementing version numbers
|
14
|
+
|
15
|
+
1. **MAJOR** version is incremented when incompatible changes are made to the API. Icrement the MAJOR version when:
|
16
|
+
- Removing or renaming classes or methods.
|
17
|
+
- Changing the signature of a method.
|
18
|
+
- Changing the behavior of a method.
|
19
|
+
|
20
|
+
2. **MINOR** version is incremented when the Relaton data model is changed. Increment the MINOR version when:
|
21
|
+
- Adding, remmoving or renaming attributes of data model classes.
|
22
|
+
- Adding new data model classes.
|
23
|
+
|
24
|
+
3. **PATCH** version is incremented when backward-compatible bug fixes are made. Increment the PATCH version when:
|
25
|
+
- Fixing a bug that does not change the behavior of the API.
|
26
|
+
- Improving the performance of the API.
|
27
|
+
|
28
|
+
== Additional Guidelines
|
29
|
+
|
30
|
+
For convenience, we use the same major and minor vesions for all the Relaton flavor gems that uses the same version of the Relaton data model.
|
31
|
+
|
32
|
+
== Exceptions
|
33
|
+
|
34
|
+
In some cases, we may increment the `PATCH` version for backward-incompatible changes. In such cases, we will update dependent gems to use the new version or higher. For example `"~> 1.19.2"` doen't allow to use version less than `1.19.2`.
|
35
|
+
|
36
|
+
== References
|
37
|
+
|
38
|
+
- https://semver.org/[Semantic Versioning]
|
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
data/relaton.gemspec
CHANGED
@@ -29,32 +29,32 @@ Gem::Specification.new do |spec|
|
|
29
29
|
# spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
30
30
|
spec.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
|
31
31
|
|
32
|
-
spec.add_dependency "relaton-3gpp", "~> 1.
|
33
|
-
spec.add_dependency "relaton-bipm", "~> 1.
|
34
|
-
spec.add_dependency "relaton-bsi", "~> 1.
|
35
|
-
spec.add_dependency "relaton-calconnect", "~> 1.
|
36
|
-
spec.add_dependency "relaton-ccsds", "~> 1.
|
37
|
-
spec.add_dependency "relaton-cen", "~> 1.
|
38
|
-
spec.add_dependency "relaton-cie", "~> 1.
|
39
|
-
spec.add_dependency "relaton-doi", "~> 1.
|
40
|
-
spec.add_dependency "relaton-ecma", "~> 1.
|
41
|
-
spec.add_dependency "relaton-etsi", "~> 1.
|
42
|
-
spec.add_dependency "relaton-gb", "~> 1.
|
43
|
-
spec.add_dependency "relaton-iana", "~> 1.
|
44
|
-
spec.add_dependency "relaton-iec", "~> 1.
|
45
|
-
spec.add_dependency "relaton-ieee", "~> 1.
|
46
|
-
spec.add_dependency "relaton-ietf", "~> 1.
|
47
|
-
spec.add_dependency "relaton-iho", "~> 1.
|
48
|
-
spec.add_dependency "relaton-isbn", "~> 1.
|
49
|
-
spec.add_dependency "relaton-iso", "~> 1.
|
50
|
-
spec.add_dependency "relaton-itu", "~> 1.
|
51
|
-
spec.add_dependency "relaton-jis", "~> 1.
|
52
|
-
spec.add_dependency "relaton-nist", "~> 1.
|
53
|
-
spec.add_dependency "relaton-oasis", "~> 1.
|
54
|
-
spec.add_dependency "relaton-ogc", "~> 1.
|
55
|
-
spec.add_dependency "relaton-omg", "~> 1.
|
56
|
-
spec.add_dependency "relaton-plateau", "~> 1.
|
57
|
-
spec.add_dependency "relaton-un", "~> 1.
|
58
|
-
spec.add_dependency "relaton-w3c", "~> 1.
|
59
|
-
spec.add_dependency "relaton-xsf", "~> 1.
|
32
|
+
spec.add_dependency "relaton-3gpp", "~> 1.20.0"
|
33
|
+
spec.add_dependency "relaton-bipm", "~> 1.20.0"
|
34
|
+
spec.add_dependency "relaton-bsi", "~> 1.20.0"
|
35
|
+
spec.add_dependency "relaton-calconnect", "~> 1.20.0"
|
36
|
+
spec.add_dependency "relaton-ccsds", "~> 1.20.2"
|
37
|
+
spec.add_dependency "relaton-cen", "~> 1.20.0"
|
38
|
+
spec.add_dependency "relaton-cie", "~> 1.20.0"
|
39
|
+
spec.add_dependency "relaton-doi", "~> 1.20.0"
|
40
|
+
spec.add_dependency "relaton-ecma", "~> 1.20.0"
|
41
|
+
spec.add_dependency "relaton-etsi", "~> 1.20.0"
|
42
|
+
spec.add_dependency "relaton-gb", "~> 1.20.0"
|
43
|
+
spec.add_dependency "relaton-iana", "~> 1.20.0"
|
44
|
+
spec.add_dependency "relaton-iec", "~> 1.20.0"
|
45
|
+
spec.add_dependency "relaton-ieee", "~> 1.20.0"
|
46
|
+
spec.add_dependency "relaton-ietf", "~> 1.20.0"
|
47
|
+
spec.add_dependency "relaton-iho", "~> 1.20.0"
|
48
|
+
spec.add_dependency "relaton-isbn", "~> 1.20.0"
|
49
|
+
spec.add_dependency "relaton-iso", "~> 1.20.0"
|
50
|
+
spec.add_dependency "relaton-itu", "~> 1.20.0"
|
51
|
+
spec.add_dependency "relaton-jis", "~> 1.20.0"
|
52
|
+
spec.add_dependency "relaton-nist", "~> 1.20.0"
|
53
|
+
spec.add_dependency "relaton-oasis", "~> 1.20.0"
|
54
|
+
spec.add_dependency "relaton-ogc", "~> 1.20.0"
|
55
|
+
spec.add_dependency "relaton-omg", "~> 1.20.0"
|
56
|
+
spec.add_dependency "relaton-plateau", "~> 1.20.0"
|
57
|
+
spec.add_dependency "relaton-un", "~> 1.20.0"
|
58
|
+
spec.add_dependency "relaton-w3c", "~> 1.20.0"
|
59
|
+
spec.add_dependency "relaton-xsf", "~> 1.20.0"
|
60
60
|
end
|
@@ -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"
|