relaton 1.11.0 → 1.11.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +1 -5
  3. data/.rubocop.yml +1 -1
  4. data/Gemfile +0 -3
  5. data/lib/relaton/db.rb +8 -24
  6. data/lib/relaton/registry.rb +28 -0
  7. data/lib/relaton/util.rb +1 -1
  8. data/lib/relaton/version.rb +1 -1
  9. data/relaton.gemspec +2 -2
  10. data/spec/relaton/registry_spec.rb +1 -0
  11. data/spec/relaton/util_spec.rb +7 -0
  12. data/spec/relaton_spec.rb +6 -6
  13. data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +12 -12
  14. data/spec/vcr_cassetes/async_fetch.yml +1393 -1524
  15. data/spec/vcr_cassetes/bsi_bs_en_iso_8848.yml +12 -14
  16. data/spec/vcr_cassetes/cc_dir_10005_2019.yml +11 -13
  17. data/spec/vcr_cassetes/cie_001_1980.yml +8 -9
  18. data/spec/vcr_cassetes/ecma_6.yml +8 -9
  19. data/spec/vcr_cassetes/en_10160_1999.yml +244 -0
  20. data/spec/vcr_cassetes/fisp_140.yml +7 -8
  21. data/spec/vcr_cassetes/gb_t_20223_2006.yml +9 -11
  22. data/spec/vcr_cassetes/iana_service_names_port_numbers.yml +11 -12
  23. data/spec/vcr_cassetes/iec_60050_102_2007.yml +29 -34
  24. data/spec/vcr_cassetes/iec_combined_included.yml +88 -105
  25. data/spec/vcr_cassetes/ieee_528_2019.yml +1304 -1295
  26. data/spec/vcr_cassetes/iho_b_11.yml +8 -9
  27. data/spec/vcr_cassetes/iso_111111119115_1.yml +3 -4
  28. data/spec/vcr_cassetes/iso_19115_1.yml +15 -19
  29. data/spec/vcr_cassetes/iso_19115_1_2.yml +31 -39
  30. data/spec/vcr_cassetes/iso_19115_all_parts.yml +18 -22
  31. data/spec/vcr_cassetes/iso_19133_2005.yml +16 -20
  32. data/spec/vcr_cassetes/iso_combined_applied.yml +31 -39
  33. data/spec/vcr_cassetes/iso_combined_included.yml +31 -39
  34. data/spec/vcr_cassetes/iso_dis_14093.yml +16 -20
  35. data/spec/vcr_cassetes/itu_combined_included.yml +197 -335
  36. data/spec/vcr_cassetes/oasis_amqp_core_types_v1_0_pt1.yml +11 -12
  37. data/spec/vcr_cassetes/ogc_19_025r1.yml +10 -11
  38. data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +5 -6
  39. data/spec/vcr_cassetes/rfc_8341.yml +8 -9
  40. data/spec/vcr_cassetes/sp_800_38b.yml +7 -8
  41. data/spec/vcr_cassetes/threads_from_env.yml +65 -77
  42. data/spec/vcr_cassetes/un_rtade_cefact_2004_32.yml +31 -36
  43. data/spec/vcr_cassetes/w3c_json_ld11.yml +96 -13
  44. metadata +7 -8
  45. data/spec/vcr_cassetes/api_relaton_org.yml +0 -57
  46. data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +0 -198
  47. data/spec/vcr_cassetes/cen_en_10160_1999.yml +0 -249
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ba66eb8e85f33add05b73475aec5b97e27533f2e11922f4455b6762f7e68356
4
- data.tar.gz: 6fc85eb07f89fdce73b80c3ed6228ed55ab18e0ab00375fc2b4febb111851ab1
3
+ metadata.gz: 4e53eb8b2768e1b80e472312aa1af438457ce7115fe078256318749666261f33
4
+ data.tar.gz: 670a8f3815488a7b315c1e0b56f6376c16fd317cec1fb444d7c6d0dac9c92107
5
5
  SHA512:
6
- metadata.gz: 5b59b213a48233449cd87a46652c627cc14b4a805c0186198f6cba402998a6e4aaeabbaddfcedc51014caba82e203900c1627069146972fb92e15eb6aaa6d5f3
7
- data.tar.gz: 13a342631fa1f3b403571d8a2d7201d7eeac7402e9232967b418c10b52e0ecdb9c2e22a0e89ee3b15477aa5f18ebaf8111e58d591c8e04e3a037dfe6e79c142a
6
+ metadata.gz: 64186cb269dbd470798c3ccbe2996ea736c909c7258bc385528626e043bee1c7d88a1a6409948392ef73203ea4715a93b8474bfd3437503a08a1e312d430a968
7
+ data.tar.gz: 434cbc56312aa11577c2227788eeb930ea2e85e9f5c98f37b5738e58d030bfbcf0cbffcdeb623dda7ef31ca7628bc80f7a88a63050814e3b87a0c1883abcb287
@@ -16,7 +16,7 @@ jobs:
16
16
  strategy:
17
17
  fail-fast: false
18
18
  matrix:
19
- ruby: [ '3.0', '2.7', '2.6', '2.5' ]
19
+ ruby: [ '3.0', '2.7', '2.6' ]
20
20
  os: [ ubuntu-latest, windows-latest, macos-latest ]
21
21
  experimental: [ false ]
22
22
  steps:
@@ -24,10 +24,6 @@ jobs:
24
24
  with:
25
25
  submodules: true
26
26
 
27
- # https://github.com/ruby-debug/debase/issues/89#issuecomment-686827382
28
- - if: matrix.os == 'macos-latest' && matrix.ruby == '2.5'
29
- run: echo BUNDLE_BUILD__DEBASE="--with-cflags=\"-Wno-error=implicit-function-declaration\"" >> $GITHUB_ENV
30
-
31
27
  - uses: ruby/setup-ruby@v1
32
28
  with:
33
29
  ruby-version: ${{ matrix.ruby }}
data/.rubocop.yml CHANGED
@@ -7,6 +7,6 @@ require: rubocop-rails
7
7
  inherit_from:
8
8
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
9
9
  AllCops:
10
- TargetRubyVersion: 2.5
10
+ TargetRubyVersion: 2.6
11
11
  Rails:
12
12
  Enabled: false
data/Gemfile CHANGED
@@ -1,6 +1,3 @@
1
- Encoding.default_external = Encoding::UTF_8
2
- Encoding.default_internal = Encoding::UTF_8
3
-
4
1
  source "https://rubygems.org"
5
2
 
6
3
  # Specify your gem's dependencies in gemspec
data/lib/relaton/db.rb CHANGED
@@ -63,7 +63,7 @@ module Relaton
63
63
  # RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
64
64
  ##
65
65
  def fetch(code, year = nil, opts = {})
66
- stdclass = standard_class(code) || return
66
+ stdclass = @registry.class_by_ref(code) || return
67
67
  processor = @registry.processors[stdclass]
68
68
  ref = if processor.respond_to?(:urn_to_code)
69
69
  processor.urn_to_code(code)&.first
@@ -101,7 +101,7 @@ module Relaton
101
101
 
102
102
  # Fetch asynchronously
103
103
  def fetch_async(code, year = nil, opts = {}, &block) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
104
- stdclass = standard_class code
104
+ stdclass = @registry.class_by_ref code
105
105
  if stdclass
106
106
  unless @queues[stdclass]
107
107
  processor = @registry.processors[stdclass]
@@ -142,7 +142,7 @@ module Relaton
142
142
  @registry.processors.each do |name, processor|
143
143
  std = name if processor.prefix == stdclass
144
144
  end
145
- std = standard_class(code) or return nil unless std
145
+ std = @registry.class_by_ref(code) or return nil unless std
146
146
 
147
147
  check_bibliocache(code, year, opts, std)
148
148
  end
@@ -151,8 +151,8 @@ module Relaton
151
151
  # @param code [String]
152
152
  # @return [Array]
153
153
  def docid_type(code)
154
- stdclass = standard_class(code) or return [nil, code]
155
- _prefix, code = strip_id_wrapper(code, stdclass)
154
+ stdclass = @registry.class_by_ref(code) or return [nil, code]
155
+ _, code = strip_id_wrapper(code, stdclass)
156
156
  [@registry.processors[stdclass].idtype, code]
157
157
  end
158
158
 
@@ -218,7 +218,7 @@ module Relaton
218
218
  # @param year [Integer, nil] year to filter
219
219
  # @return [BibliographicItem, nil]
220
220
  def search_edition_year(file, content, edition, year) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
221
- processor = @registry.processors[standard_class(file.split("/")[-2])]
221
+ processor = @registry.processor_by_ref(file.split("/")[-2])
222
222
  item = if file.match?(/xml$/) then processor.from_xml(content)
223
223
  else processor.hash_to_bib(YAML.safe_load(content))
224
224
  end
@@ -269,32 +269,16 @@ module Relaton
269
269
  type: "updates")
270
270
  end
271
271
  divider = stdclass == :relaton_itu ? " " : "/"
272
- refs[1..-1].each_with_object(doc) do |c, d|
272
+ refs[1..].each_with_object(doc) do |c, d|
273
273
  bib = check_bibliocache(ref + divider + c, year, opts, stdclass)
274
274
  if bib
275
275
  d.relation << RelatonBib::DocumentRelation.new(
276
- type: reltype, description: reldesc, bibitem: bib
276
+ type: reltype, description: reldesc, bibitem: bib,
277
277
  )
278
278
  end
279
279
  end
280
280
  end
281
281
 
282
- # @param code [String] code of standard
283
- # @return [Symbol] standard class name
284
- def standard_class(code)
285
- @registry.processors.each do |name, processor|
286
- return name if /^(urn:)?#{processor.prefix}/i.match?(code) ||
287
- processor.defaultprefix.match(code)
288
- end
289
- allowed = @registry.processors.reduce([]) do |m, (_k, v)|
290
- m << v.prefix
291
- end
292
- Util.log <<~WARN, :info
293
- [relaton] #{code} does not have a recognised prefix: #{allowed.join(', ')}.
294
- See https://github.com/relaton/relaton/ for instructions on prefixing and wrapping document identifiers to disambiguate them.
295
- WARN
296
- end
297
-
298
282
  # TODO: i18n
299
283
  # Fofmat ID
300
284
  # @param code [String]
@@ -77,6 +77,34 @@ module Relaton
77
77
  processors.values.detect { |v| v.prefix == type&.upcase }
78
78
  end
79
79
 
80
+ #
81
+ # Find processor by reference or prefix
82
+ #
83
+ # @param [String] ref reference or prefix
84
+ #
85
+ # @return [Relaton::Processor] processor
86
+ #
87
+ def processor_by_ref(ref)
88
+ @processors[class_by_ref(ref)]
89
+ end
90
+
91
+ #
92
+ # Find processor by refernce or prefix
93
+ #
94
+ # @param ref [String] reference or prefix
95
+ #
96
+ # @return [Symbol, nil] standard class name
97
+ #
98
+ def class_by_ref(ref)
99
+ @processors.each do |class_name, processor|
100
+ return class_name if /^(urn:)?#{processor.prefix}(?!\w)/i.match?(ref) ||
101
+ processor.defaultprefix.match(ref)
102
+ end
103
+ Util.log <<~WARN, :info
104
+ [relaton] #{ref} does not have a recognised prefix
105
+ WARN
106
+ end
107
+
80
108
  private
81
109
 
82
110
  def camel_case(gem_name)
data/lib/relaton/util.rb CHANGED
@@ -6,7 +6,7 @@ module Relaton
6
6
  log_types = Relaton.configuration.logs.map(&:to_s) || []
7
7
 
8
8
  if log_types.include?(type.to_s)
9
- warn(message)
9
+ warn CGI.unescapeHTML(message)
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "1.11.0".freeze
2
+ VERSION = "1.11.3".freeze
3
3
  end
data/relaton.gemspec CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
  spec.files = `git ls-files`.split("\n")
29
29
  spec.test_files = `git ls-files -- {spec}/*`.split("\n")
30
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
30
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
31
31
 
32
32
  spec.add_dependency "relaton-3gpp", "~> 1.11.0"
33
33
  spec.add_dependency "relaton-bipm", "~> 1.11.0"
@@ -63,6 +63,6 @@ Gem::Specification.new do |spec|
63
63
  spec.add_development_dependency "rubocop-rails", "~> 2.10.0"
64
64
  spec.add_development_dependency "simplecov", "~> 0.15"
65
65
  spec.add_development_dependency "timecop", "~> 0.9"
66
- spec.add_development_dependency "vcr", "~> 5"
66
+ spec.add_development_dependency "vcr", "~> 6"
67
67
  spec.add_development_dependency "webmock"
68
68
  end
@@ -70,6 +70,7 @@ RSpec.describe Relaton::Registry do
70
70
 
71
71
  it "BIPM" do
72
72
  expect(Relaton::Registry.instance.by_type("BIPM")).to be_instance_of RelatonBipm::Processor
73
+ expect(Relaton::Registry.instance.processor_by_ref("CCTF")).to be_instance_of RelatonBipm::Processor
73
74
  end
74
75
 
75
76
  it "ECMA" do
@@ -0,0 +1,7 @@
1
+ RSpec.describe Relaton::Util do
2
+ it "logs HTML entities" do
3
+ expect do
4
+ Relaton::Util.log("Kolbe &amp; Gr&#246;ger 2003")
5
+ end.to output("Kolbe & Gröger 2003\n").to_stderr
6
+ end
7
+ end
data/spec/relaton_spec.rb CHANGED
@@ -196,10 +196,10 @@ RSpec.describe Relaton::Db do
196
196
  expect(File.exist?("testcache2")).to be true
197
197
  testcache = Relaton::DbCache.new "testcache"
198
198
  expect(testcache["IETF(RFC 8341)"]).to include "<docidentifier "\
199
- "type=\"RFC\" scope=\"anchor\">RFC8341</docidentifier>"
199
+ "type=\"RFC\" primary=\"true\">RFC 8341</docidentifier>"
200
200
  testcache = Relaton::DbCache.new "testcache2"
201
201
  expect(testcache["IETF(RFC 8341)"]).to include "<docidentifier "\
202
- "type=\"RFC\" scope=\"anchor\">RFC8341</docidentifier>"
202
+ "type=\"RFC\" primary=\"true\">RFC 8341</docidentifier>"
203
203
  end
204
204
  end
205
205
 
@@ -293,8 +293,8 @@ RSpec.describe Relaton::Db do
293
293
  end
294
294
 
295
295
  it "get CEN reference" do
296
- VCR.use_cassette "cen_en_10160_1999" do
297
- bib = @db.fetch "CEN EN 10160:1999"
296
+ VCR.use_cassette "en_10160_1999" do
297
+ bib = @db.fetch "EN 10160:1999"
298
298
  expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
299
299
  end
300
300
  end
@@ -381,9 +381,9 @@ RSpec.describe Relaton::Db do
381
381
  end
382
382
  end
383
383
 
384
- context "HIST" do
384
+ context "NIST" do
385
385
  it "included" do
386
- VCR.use_cassette "hist_cmbined_included" do
386
+ VCR.use_cassette "nist_combined_included" do
387
387
  bib = @db.fetch "NIST SP 800-38A, Add"
388
388
  expect(bib.docidentifier[0].id).to eq "NIST SP 800-38A, Add"
389
389
  expect(bib.relation[0].type).to eq "updates"
@@ -23,7 +23,7 @@ http_interactions:
23
23
  Connection:
24
24
  - keep-alive
25
25
  Content-Length:
26
- - '742'
26
+ - '746'
27
27
  Cache-Control:
28
28
  - max-age=300
29
29
  Content-Security-Policy:
@@ -31,7 +31,7 @@ http_interactions:
31
31
  Content-Type:
32
32
  - text/plain; charset=utf-8
33
33
  Etag:
34
- - W/"5a6b504923740a5333699cfb900329bc0771ece2c2c583a91a69ec17cb44852f"
34
+ - W/"7b1fd8c3cc8a83e47b78d925027060ef4583c418e75be5749d38f6a37e0f01ca"
35
35
  Strict-Transport-Security:
36
36
  - max-age=31536000
37
37
  X-Content-Type-Options:
@@ -41,29 +41,29 @@ http_interactions:
41
41
  X-Xss-Protection:
42
42
  - 1; mode=block
43
43
  X-Github-Request-Id:
44
- - 4B02:2F62:87AF2:FB38E:6252D29A
44
+ - FEF4:1395A:3E1BC8:42A2CE:6290BA99
45
45
  Accept-Ranges:
46
46
  - bytes
47
47
  Date:
48
- - Sun, 10 Apr 2022 12:50:35 GMT
48
+ - Fri, 27 May 2022 11:48:42 GMT
49
49
  Via:
50
50
  - 1.1 varnish
51
51
  X-Served-By:
52
- - cache-sof1510027-SOF
52
+ - cache-vie6371-VIE
53
53
  X-Cache:
54
54
  - MISS
55
55
  X-Cache-Hits:
56
56
  - '0'
57
57
  X-Timer:
58
- - S1649595035.930194,VS0,VE374
58
+ - S1653652122.797835,VS0,VE233
59
59
  Vary:
60
60
  - Authorization,Accept-Encoding,Origin
61
61
  Access-Control-Allow-Origin:
62
62
  - "*"
63
63
  X-Fastly-Request-Id:
64
- - 1c06f92c3c3310d10355e9f3400ed3debbe4c8f8
64
+ - 740cb118933ba3ba55fcbdb02f6f313a4eb80f39
65
65
  Expires:
66
- - Sun, 10 Apr 2022 12:55:35 GMT
66
+ - Fri, 27 May 2022 11:53:42 GMT
67
67
  Source-Age:
68
68
  - '0'
69
69
  body:
@@ -102,6 +102,7 @@ http_interactions:
102
102
  postcode: '06921'
103
103
  role:
104
104
  - author
105
+ - publisher
105
106
  - person:
106
107
  name:
107
108
  completename:
@@ -126,7 +127,7 @@ http_interactions:
126
127
  value: withdrawn
127
128
  place:
128
129
  - Sophia Antipolis Cedex, France
129
- fetched: '2022-03-30'
130
+ fetched: '2022-04-30'
130
131
  doctype: TR
131
132
  editorialgroup:
132
133
  - name: SMG5
@@ -142,6 +143,5 @@ http_interactions:
142
143
  freeze_stage3_meeting: SMG-28
143
144
  close_meeting: SP-28
144
145
  project_end: '1999-02-12'
145
- http_version:
146
- recorded_at: Sun, 10 Apr 2022 12:50:35 GMT
147
- recorded_with: VCR 5.1.0
146
+ recorded_at: Fri, 27 May 2022 11:48:41 GMT
147
+ recorded_with: VCR 6.1.0