relaton 1.19.1 → 1.20.0
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/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"
|