relaton 1.20.2 → 2.0.0.pre.alpha.1
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/.rubocop.yml +1 -1
- data/CLAUDE.md +4 -2
- data/Rakefile +1 -1
- data/bin/rspec +1 -2
- data/docs/README.adoc +93 -86
- data/lib/relaton/config.rb +2 -3
- data/lib/relaton/db.rb +57 -39
- data/lib/relaton/db_cache.rb +3 -2
- data/lib/relaton/registry.rb +23 -30
- data/lib/relaton/util.rb +2 -1
- data/lib/relaton/version.rb +1 -1
- data/lib/relaton/workers_pool.rb +1 -1
- data/lib/relaton.rb +6 -7
- data/relaton.gemspec +31 -31
- data/spec/relaton/db_cache_spec.rb +1 -1
- data/spec/relaton/db_spec.rb +84 -46
- data/spec/relaton/registry_spec.rb +43 -41
- data/spec/relaton/util_spec.rb +1 -0
- data/spec/relaton_spec.rb +345 -163
- data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +12595 -13226
- data/spec/vcr_cassetes/api_relaton_org.yml +7 -7
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +76 -78
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +48 -42
- data/spec/vcr_cassetes/cie_001_1980.yml +302 -262
- data/spec/vcr_cassetes/cipm_meeting_43.yml +1380 -1370
- data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +3 -3
- data/spec/vcr_cassetes/ecma_6.yml +182 -238
- data/spec/vcr_cassetes/en_10160_1999.yml +13083 -13122
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +9 -9
- data/spec/vcr_cassetes/ieee_528_2019.yml +2633 -2411
- data/spec/vcr_cassetes/iso_19115_1.yml +13692 -13957
- data/spec/vcr_cassetes/iso_19115_1_2.yml +235 -244
- data/spec/vcr_cassetes/iso_19115_1_std.yml +13690 -13955
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +161 -168
- data/spec/vcr_cassetes/iso_19133_2005.yml +83 -79
- data/spec/vcr_cassetes/iso_combined_applied.yml +239 -238
- data/spec/vcr_cassetes/iso_combined_included.yml +240 -239
- data/spec/vcr_cassetes/iso_dis.yml +87 -88
- data/spec/vcr_cassetes/ogc_19_025r1.yml +248 -243
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +268 -1513
- data/spec/vcr_cassetes/rfc_8341.yml +1090 -1086
- metadata +62 -80
- data/lib/relaton/processor.rb +0 -46
- data/spec/relaton/processor_spec.rb +0 -113
data/lib/relaton/db.rb
CHANGED
|
@@ -28,13 +28,13 @@ 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
|
|
32
31
|
p.remove_index_file if p.respond_to? :remove_index_file
|
|
33
32
|
end
|
|
34
33
|
end
|
|
35
34
|
|
|
36
35
|
##
|
|
37
|
-
# The class of reference requested is determined by the prefix
|
|
36
|
+
# The class of reference requested is determined by the prefix
|
|
37
|
+
# of the reference:
|
|
38
38
|
# GB Standard for gbbib, IETF for ietfbib, ISO for isobib, IEC or IEV for
|
|
39
39
|
# iecbib,
|
|
40
40
|
#
|
|
@@ -104,8 +104,10 @@ module Relaton
|
|
|
104
104
|
# @param [String] year document yer
|
|
105
105
|
# @param [Hash] opts options
|
|
106
106
|
#
|
|
107
|
-
# @return [RelatonBib::BibliographicItem,
|
|
108
|
-
#
|
|
107
|
+
# @return [RelatonBib::BibliographicItem,
|
|
108
|
+
# RelatonBib::RequestError, nil] bibitem if document is
|
|
109
|
+
# found, request error if server doesn't answer,
|
|
110
|
+
# nil if document not found
|
|
109
111
|
#
|
|
110
112
|
def fetch_async(ref, year = nil, opts = {}, &block) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
111
113
|
stdclass = @registry.class_by_ref ref
|
|
@@ -115,13 +117,14 @@ module Relaton
|
|
|
115
117
|
threads = ENV["RELATON_FETCH_PARALLEL"]&.to_i || processor.threads
|
|
116
118
|
wp = WorkersPool.new(threads) do |args|
|
|
117
119
|
args[3].call fetch(*args[0..2])
|
|
118
|
-
rescue
|
|
120
|
+
rescue Relaton::RequestError => e
|
|
119
121
|
args[3].call e
|
|
120
122
|
rescue StandardError => e
|
|
121
123
|
Util.error "`#{args[0]}` -- #{e.message}"
|
|
122
124
|
args[3].call nil
|
|
123
125
|
end
|
|
124
|
-
@queues[stdclass] =
|
|
126
|
+
@queues[stdclass] =
|
|
127
|
+
{ queue: SizedQueue.new(threads * 2), workers_pool: wp }
|
|
125
128
|
Thread.new { process_queue @queues[stdclass] }
|
|
126
129
|
end
|
|
127
130
|
@queues[stdclass][:queue] << [ref, year, opts, block]
|
|
@@ -194,7 +197,8 @@ module Relaton
|
|
|
194
197
|
# @param (see #fetch_api)
|
|
195
198
|
# @return (see #fetch_api)
|
|
196
199
|
def fetch_doc(code, year, opts, processor)
|
|
197
|
-
if Relaton.configuration.use_api then fetch_api(code, year, opts,
|
|
200
|
+
if Relaton.configuration.use_api then fetch_api(code, year, opts,
|
|
201
|
+
processor)
|
|
198
202
|
else processor.get(code, year, opts)
|
|
199
203
|
end
|
|
200
204
|
end
|
|
@@ -211,7 +215,8 @@ module Relaton
|
|
|
211
215
|
# @param processor [Relaton::Processor]
|
|
212
216
|
# @return [RelatonBib::BibliographicItem, nil]
|
|
213
217
|
def fetch_api(code, year, opts, processor)
|
|
214
|
-
url = "#{Relaton.configuration.api_host}
|
|
218
|
+
url = "#{Relaton.configuration.api_host}" \
|
|
219
|
+
"/api/v1/document?#{params(code, year, opts)}"
|
|
215
220
|
rsp = Net::HTTP.get_response URI(url)
|
|
216
221
|
processor.from_xml rsp.body if rsp.code == "200"
|
|
217
222
|
rescue Errno::ECONNREFUSED
|
|
@@ -238,7 +243,7 @@ module Relaton
|
|
|
238
243
|
# @param year [Integer, nil] year to filter
|
|
239
244
|
# @return [BibliographicItem, nil]
|
|
240
245
|
def search_xml(file, xml, text, edition, year)
|
|
241
|
-
return unless text.nil? || match_xml_text(xml, text)
|
|
246
|
+
return unless text.nil? || match_xml_text?(xml, text)
|
|
242
247
|
|
|
243
248
|
search_edition_year(file, xml, edition, year)
|
|
244
249
|
end
|
|
@@ -251,10 +256,12 @@ module Relaton
|
|
|
251
256
|
def search_edition_year(file, content, edition, year) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
252
257
|
processor = @registry.processor_by_ref(file.split("/")[-2])
|
|
253
258
|
item = if file.match?(/xml$/) then processor.from_xml(content)
|
|
254
|
-
else processor.
|
|
259
|
+
else processor.from_yaml(content)
|
|
255
260
|
end
|
|
256
261
|
item if (edition.nil? || item.edition.content == edition) && (year.nil? ||
|
|
257
|
-
item.date.detect
|
|
262
|
+
item.date.detect do |d|
|
|
263
|
+
d.type == "published" && d.at.to_date.year.to_s == year.to_s
|
|
264
|
+
end)
|
|
258
265
|
end
|
|
259
266
|
|
|
260
267
|
#
|
|
@@ -265,8 +272,13 @@ module Relaton
|
|
|
265
272
|
#
|
|
266
273
|
# @return [Boolean]
|
|
267
274
|
#
|
|
268
|
-
def match_xml_text(xml, text)
|
|
269
|
-
|
|
275
|
+
def match_xml_text?(xml, text)
|
|
276
|
+
esc = Regexp.escape(text)
|
|
277
|
+
pat = "((?<attr>=((?<apstr>')|\"" \
|
|
278
|
+
"))|>).*?#{esc}" \
|
|
279
|
+
".*?(?(<attr>)(?(<apstr>)'|\")|<)"
|
|
280
|
+
Regexp.new(pat, Regexp::MULTILINE | Regexp::IGNORECASE)
|
|
281
|
+
.match?(xml)
|
|
270
282
|
end
|
|
271
283
|
|
|
272
284
|
# @param code [String]
|
|
@@ -279,14 +291,8 @@ module Relaton
|
|
|
279
291
|
# actual reference with year
|
|
280
292
|
# @option opts [Integer] :retries (1) Number of network retries
|
|
281
293
|
#
|
|
282
|
-
# @return [nil,
|
|
283
|
-
#
|
|
284
|
-
# RelatonIetf::IetfBibliographicItem, RelatonIec::IecBibliographicItem,
|
|
285
|
-
# RelatonIeee::IeeeBibliographicItem, RelatonNist::NistBibliongraphicItem,
|
|
286
|
-
# RelatonGb::GbbibliographicItem, RelatonOgc::OgcBibliographicItem,
|
|
287
|
-
# RelatonCalconnect::CcBibliographicItem, RelatinUn::UnBibliographicItem,
|
|
288
|
-
# RelatonBipm::BipmBibliographicItem, RelatonIho::IhoBibliographicItem,
|
|
289
|
-
# RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
|
|
294
|
+
# @return [nil, Relaton::Bib::ItemData
|
|
295
|
+
#
|
|
290
296
|
def combine_doc(code, year, opts, stdclass) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
291
297
|
return if stdclass == :relaton_bipm
|
|
292
298
|
|
|
@@ -295,21 +301,22 @@ module Relaton
|
|
|
295
301
|
reldesc = nil
|
|
296
302
|
elsif (refs = code.split ", ").size > 1
|
|
297
303
|
reltype = "complements"
|
|
298
|
-
reldesc =
|
|
304
|
+
reldesc = Bib::LocalizedMarkedUpString.new content: "amendment"
|
|
299
305
|
else return
|
|
300
306
|
end
|
|
301
307
|
|
|
302
|
-
|
|
308
|
+
yaml = { docidentifier: [{ content: code }] }.to_yaml
|
|
309
|
+
doc = @registry[stdclass].from_yaml(yaml)
|
|
303
310
|
ref = refs[0]
|
|
304
311
|
updates = check_bibliocache(refs[0], year, opts, stdclass)
|
|
305
312
|
if updates
|
|
306
|
-
doc.relation <<
|
|
313
|
+
doc.relation << Bib::Relation.new(bibitem: updates, type: "updates")
|
|
307
314
|
end
|
|
308
315
|
divider = stdclass == :relaton_itu ? " " : "/"
|
|
309
316
|
refs[1..].each_with_object(doc) do |c, d|
|
|
310
317
|
bib = check_bibliocache(ref + divider + c, year, opts, stdclass)
|
|
311
318
|
if bib
|
|
312
|
-
d.relation <<
|
|
319
|
+
d.relation << Bib::Relation.new(
|
|
313
320
|
type: reltype, description: reldesc, bibitem: bib,
|
|
314
321
|
)
|
|
315
322
|
end
|
|
@@ -334,12 +341,10 @@ module Relaton
|
|
|
334
341
|
ret = code
|
|
335
342
|
ret += (stdclass == :relaton_gb ? "-" : ":") + year if year
|
|
336
343
|
ret += " (all parts)" if opts[:all_parts]
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
if
|
|
341
|
-
ret += " before-#{opts[:publication_date_before]}"
|
|
342
|
-
end
|
|
344
|
+
after = opts[:publication_date_after]
|
|
345
|
+
ret += " after-#{after}" if after
|
|
346
|
+
before = opts[:publication_date_before]
|
|
347
|
+
ret += " before-#{before}" if before
|
|
343
348
|
["#{prefix}(#{ret.strip})", code]
|
|
344
349
|
end
|
|
345
350
|
|
|
@@ -349,7 +354,11 @@ module Relaton
|
|
|
349
354
|
# @return [Array]
|
|
350
355
|
def strip_id_wrapper(code, stdclass)
|
|
351
356
|
prefix = @registry[stdclass].prefix
|
|
352
|
-
code =
|
|
357
|
+
code =
|
|
358
|
+
if code.is_a?(String)
|
|
359
|
+
code.sub("\u2013", "-").sub(/^#{prefix}\((.+)\)$/, "\\1")
|
|
360
|
+
else code.to_s
|
|
361
|
+
end
|
|
353
362
|
[prefix, code]
|
|
354
363
|
end
|
|
355
364
|
|
|
@@ -461,7 +470,9 @@ module Relaton
|
|
|
461
470
|
#
|
|
462
471
|
def new_bib_entry(code, year, opts, stdclass, **args)
|
|
463
472
|
entry = @semaphore.synchronize { args[:db] && args[:db][args[:id]] }
|
|
464
|
-
|
|
473
|
+
if !entry || opts[:no_cache]
|
|
474
|
+
return fetch_entry(code, year, opts, stdclass, **args)
|
|
475
|
+
end
|
|
465
476
|
|
|
466
477
|
if entry&.match?(/^not_found/)
|
|
467
478
|
Util.info "not found in cache, if you wish to " \
|
|
@@ -484,7 +495,8 @@ module Relaton
|
|
|
484
495
|
|
|
485
496
|
#
|
|
486
497
|
# If the reference isn't equal to the document identifier
|
|
487
|
-
# then store the document in the cache and create
|
|
498
|
+
# then store the document in the cache and create
|
|
499
|
+
# for the reference a redirection to the document
|
|
488
500
|
#
|
|
489
501
|
# @param [<Type>] bib <description>
|
|
490
502
|
# @param [<Type>] stdclass <description>
|
|
@@ -493,11 +505,13 @@ module Relaton
|
|
|
493
505
|
# @return [<Type>] <description>
|
|
494
506
|
#
|
|
495
507
|
def check_entry(bib, stdclass, **args) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
496
|
-
bib_id = bib
|
|
508
|
+
bib_id = bib && bib.docidentifier.first&.content
|
|
497
509
|
|
|
498
510
|
# when ref isn't equal to bib's id then return a redirection to bib's id
|
|
499
|
-
|
|
500
|
-
|
|
511
|
+
quoted = Regexp.quote("(#{bib_id})")
|
|
512
|
+
if args[:db] && args[:id] && bib_id &&
|
|
513
|
+
args[:id] !~ /#{quoted}/
|
|
514
|
+
bid = std_id(bib.docidentifier.first.content, nil, {}, stdclass).first
|
|
501
515
|
@semaphore.synchronize { args[:db][bid] ||= bib_entry bib }
|
|
502
516
|
"redirection #{bid}"
|
|
503
517
|
else bib_entry bib
|
|
@@ -521,7 +535,7 @@ module Relaton
|
|
|
521
535
|
#
|
|
522
536
|
def net_retry(code, year, opts, processor, retries)
|
|
523
537
|
fetch_doc code, year, opts, processor
|
|
524
|
-
rescue
|
|
538
|
+
rescue Relaton::RequestError => e
|
|
525
539
|
raise e unless retries > 1
|
|
526
540
|
|
|
527
541
|
net_retry(code, year, opts, processor, retries - 1)
|
|
@@ -537,7 +551,11 @@ module Relaton
|
|
|
537
551
|
# RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
|
|
538
552
|
# @return [String] XML or "not_found mm-dd-yyyy"
|
|
539
553
|
def bib_entry(bib)
|
|
540
|
-
bib.respond_to?(:to_xml)
|
|
554
|
+
if bib.respond_to?(:to_xml)
|
|
555
|
+
bib.to_xml(bibdata: true)
|
|
556
|
+
else
|
|
557
|
+
"not_found #{Date.today}"
|
|
558
|
+
end
|
|
541
559
|
end
|
|
542
560
|
|
|
543
561
|
# Check if an XML entry's published date falls within the requested range.
|
data/lib/relaton/db_cache.rb
CHANGED
|
@@ -101,7 +101,7 @@ module Relaton
|
|
|
101
101
|
# Returns all items
|
|
102
102
|
# @return [Array<String>]
|
|
103
103
|
def all(&block)
|
|
104
|
-
Dir.glob("#{@dir}/**/*.{xml,yml,yaml}").
|
|
104
|
+
Dir.glob("#{@dir}/**/*.{xml,yml,yaml}").map do |f|
|
|
105
105
|
content = File.read(f, encoding: "utf-8")
|
|
106
106
|
block ? yield(f, content) : content
|
|
107
107
|
end
|
|
@@ -168,7 +168,8 @@ module Relaton
|
|
|
168
168
|
def filename(key)
|
|
169
169
|
prefcode = key.downcase.match(/^(?<prefix>[^(]+)\((?<code>[^)]+)/)
|
|
170
170
|
fn = if prefcode
|
|
171
|
-
"#{prefcode[:prefix]}/#{prefcode[:code].gsub(/[:\s\/()]/,
|
|
171
|
+
"#{prefcode[:prefix]}/#{prefcode[:code].gsub(/[:\s\/()]/,
|
|
172
|
+
'_').squeeze('_')}"
|
|
172
173
|
else
|
|
173
174
|
key.gsub(/[-:\s]/, "_")
|
|
174
175
|
end
|
data/lib/relaton/registry.rb
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
require "singleton"
|
|
2
2
|
|
|
3
|
-
class Error < StandardError
|
|
4
|
-
end
|
|
3
|
+
# class Error < StandardError
|
|
4
|
+
# end
|
|
5
5
|
|
|
6
6
|
module Relaton
|
|
7
7
|
class Registry
|
|
8
8
|
SUPPORTED_GEMS = %w[
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
relaton/gb relaton/iec relaton/ietf relaton/iso
|
|
10
|
+
relaton/itu relaton/nist relaton/ogc relaton/calconnect
|
|
11
|
+
relaton/omg relaton/un relaton/w3c relaton/ieee
|
|
12
|
+
relaton/iho relaton/bipm relaton/ecma relaton/cie
|
|
13
|
+
relaton/bsi relaton/cen relaton/iana relaton/3gpp
|
|
14
|
+
relaton/oasis relaton/doi relaton/jis relaton/xsf
|
|
15
|
+
relaton/ccsds relaton/etsi relaton/isbn relaton/plateau
|
|
14
16
|
].freeze
|
|
15
17
|
|
|
16
18
|
include Singleton
|
|
@@ -27,14 +29,15 @@ module Relaton
|
|
|
27
29
|
|
|
28
30
|
SUPPORTED_GEMS.each do |b|
|
|
29
31
|
require "#{b}/processor"
|
|
30
|
-
register Kernel.const_get "#{
|
|
32
|
+
register Kernel.const_get "#{gem_to_module_path(b)}::Processor"
|
|
31
33
|
rescue LoadError => e
|
|
32
|
-
Util.error "backend #{b} not present\n
|
|
34
|
+
Util.error "backend #{b} not present\n" \
|
|
35
|
+
"#{e.message}\n#{e.backtrace.join "\n"}"
|
|
33
36
|
end
|
|
34
37
|
end
|
|
35
38
|
|
|
36
39
|
def register(processor)
|
|
37
|
-
raise Error unless processor < ::
|
|
40
|
+
raise Error unless processor < Core::Processor
|
|
38
41
|
|
|
39
42
|
p = processor.new
|
|
40
43
|
return if processors[p.short]
|
|
@@ -57,33 +60,23 @@ module Relaton
|
|
|
57
60
|
#
|
|
58
61
|
# @param [String] dataset
|
|
59
62
|
#
|
|
60
|
-
# @return [Relaton::Processor, nil]
|
|
63
|
+
# @return [Relaton::Core::Processor, nil]
|
|
61
64
|
#
|
|
62
65
|
def find_processor_by_dataset(dataset)
|
|
63
|
-
|
|
66
|
+
processors.values.detect { |p| p.datasets&.include? dataset }
|
|
64
67
|
end
|
|
65
68
|
|
|
66
69
|
#
|
|
67
70
|
# Find processor by type
|
|
68
71
|
#
|
|
69
72
|
# @param type [String]
|
|
70
|
-
# @return [
|
|
71
|
-
# RelatonNist::Processor, RelatonIetf::Processot, RelatonItu::Processor,
|
|
72
|
-
# RelatonGb::Processor, RelatonOgc::Processor,
|
|
73
|
-
# RelatonCalconnect::Processor]
|
|
73
|
+
# @return [Relaton::Core::Processor]
|
|
74
74
|
def by_type(type)
|
|
75
|
-
|
|
75
|
+
processors.values.detect { |v| v.prefix == type&.upcase }
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
def [](stdclass)
|
|
79
|
-
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def require_gem(processor)
|
|
83
|
-
return unless processor
|
|
84
|
-
|
|
85
|
-
require processor.short.to_s
|
|
86
|
-
processor
|
|
79
|
+
processors[stdclass]
|
|
87
80
|
end
|
|
88
81
|
|
|
89
82
|
#
|
|
@@ -91,10 +84,10 @@ module Relaton
|
|
|
91
84
|
#
|
|
92
85
|
# @param [String] ref reference or prefix
|
|
93
86
|
#
|
|
94
|
-
# @return [Relaton::Processor] processor
|
|
87
|
+
# @return [Relaton::Core::Processor] processor
|
|
95
88
|
#
|
|
96
89
|
def processor_by_ref(ref)
|
|
97
|
-
|
|
90
|
+
processors[class_by_ref(ref)]
|
|
98
91
|
end
|
|
99
92
|
|
|
100
93
|
#
|
|
@@ -105,7 +98,7 @@ module Relaton
|
|
|
105
98
|
# @return [Symbol, nil] standard class name
|
|
106
99
|
#
|
|
107
100
|
def class_by_ref(ref)
|
|
108
|
-
ref = ref =~ /^\w+\((.*)\)$/
|
|
101
|
+
ref = Regexp.last_match(1) if ref =~ /^\w+\((.*)\)$/
|
|
109
102
|
@processors.each do |class_name, processor|
|
|
110
103
|
return class_name if /^(urn:)?#{processor.prefix}\b/i.match?(ref) ||
|
|
111
104
|
processor.defaultprefix.match(ref)
|
|
@@ -116,9 +109,9 @@ module Relaton
|
|
|
116
109
|
|
|
117
110
|
private
|
|
118
111
|
|
|
119
|
-
def
|
|
112
|
+
def gem_to_module_path(gem_name)
|
|
120
113
|
gem_name.split("/").map do |part|
|
|
121
|
-
part.
|
|
114
|
+
part.capitalize.sub("3gpp", "ThreeGpp")
|
|
122
115
|
end.join("::")
|
|
123
116
|
end
|
|
124
117
|
end
|
data/lib/relaton/util.rb
CHANGED
data/lib/relaton/version.rb
CHANGED
data/lib/relaton/workers_pool.rb
CHANGED
data/lib/relaton.rb
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
require "
|
|
1
|
+
require "relaton/bib"
|
|
2
2
|
require "relaton/util"
|
|
3
3
|
require "relaton/config"
|
|
4
4
|
require "yaml"
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
require "relaton/processor"
|
|
6
|
+
require_relative "relaton/workers_pool"
|
|
7
|
+
require_relative "relaton/db"
|
|
8
|
+
require_relative "relaton/db_cache"
|
|
9
|
+
require_relative "relaton/version"
|
|
10
|
+
require_relative "relaton/registry"
|
data/relaton.gemspec
CHANGED
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
spec.authors = ["Ribose Inc."]
|
|
11
11
|
spec.email = ["open.source@ribose.com"]
|
|
12
12
|
|
|
13
|
-
spec.summary = "The Relaton core for importing, managing and caching "\
|
|
13
|
+
spec.summary = "The Relaton core for importing, managing and caching " \
|
|
14
14
|
"bibliographic references to technical standards."
|
|
15
15
|
spec.description = <<~DESCRIPTION
|
|
16
16
|
The Relaton core for importing, managing and caching bibliographic
|
|
@@ -27,35 +27,35 @@ 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(">= 3.
|
|
30
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.2.0")
|
|
31
31
|
|
|
32
|
-
spec.add_dependency "relaton-3gpp", "~>
|
|
33
|
-
spec.add_dependency "relaton-bipm", "~>
|
|
34
|
-
spec.add_dependency "relaton-bsi", "~>
|
|
35
|
-
spec.add_dependency "relaton-calconnect", "~>
|
|
36
|
-
spec.add_dependency "relaton-ccsds", "~>
|
|
37
|
-
spec.add_dependency "relaton-cen", "~>
|
|
38
|
-
spec.add_dependency "relaton-cie", "~>
|
|
39
|
-
spec.add_dependency "relaton-doi", "~>
|
|
40
|
-
spec.add_dependency "relaton-ecma", "~>
|
|
41
|
-
spec.add_dependency "relaton-etsi", "~>
|
|
42
|
-
spec.add_dependency "relaton-gb", "~>
|
|
43
|
-
spec.add_dependency "relaton-iana", "~>
|
|
44
|
-
spec.add_dependency "relaton-iec", "~>
|
|
45
|
-
spec.add_dependency "relaton-ieee", "~>
|
|
46
|
-
spec.add_dependency "relaton-ietf", "~>
|
|
47
|
-
spec.add_dependency "relaton-iho", "~>
|
|
48
|
-
spec.add_dependency "relaton-isbn", "~>
|
|
49
|
-
spec.add_dependency "relaton-iso", "~>
|
|
50
|
-
spec.add_dependency "relaton-itu", "~>
|
|
51
|
-
spec.add_dependency "relaton-jis", "~>
|
|
52
|
-
spec.add_dependency "relaton-nist", "~>
|
|
53
|
-
spec.add_dependency "relaton-oasis", "~>
|
|
54
|
-
spec.add_dependency "relaton-ogc", "~>
|
|
55
|
-
spec.add_dependency "relaton-omg", "~>
|
|
56
|
-
spec.add_dependency "relaton-plateau", "~>
|
|
57
|
-
spec.add_dependency "relaton-un", "~>
|
|
58
|
-
spec.add_dependency "relaton-w3c", "~>
|
|
59
|
-
spec.add_dependency "relaton-xsf", "~>
|
|
60
|
-
spec.
|
|
32
|
+
spec.add_dependency "relaton-3gpp", "~> 2.0.0-alpha.3"
|
|
33
|
+
spec.add_dependency "relaton-bipm", "~> 2.0.0-alpha.2"
|
|
34
|
+
spec.add_dependency "relaton-bsi", "~> 2.0.0-alpha.1"
|
|
35
|
+
spec.add_dependency "relaton-calconnect", "~> 2.0.0-alpha.2"
|
|
36
|
+
spec.add_dependency "relaton-ccsds", "~> 2.0.0-alpha.2"
|
|
37
|
+
spec.add_dependency "relaton-cen", "~> 2.0.0-alpha.1"
|
|
38
|
+
spec.add_dependency "relaton-cie", "~> 2.0.0-alpha.2"
|
|
39
|
+
spec.add_dependency "relaton-doi", "~> 2.0.0-alpha.1"
|
|
40
|
+
spec.add_dependency "relaton-ecma", "~> 2.0.0-alpha.2"
|
|
41
|
+
spec.add_dependency "relaton-etsi", "~> 2.0.0-alpha.2"
|
|
42
|
+
spec.add_dependency "relaton-gb", "~> 2.0.0-alpha.1"
|
|
43
|
+
spec.add_dependency "relaton-iana", "~> 2.0.0-alpha.2"
|
|
44
|
+
spec.add_dependency "relaton-iec", "~> 2.0.0-alpha.2"
|
|
45
|
+
spec.add_dependency "relaton-ieee", "~> 2.0.0-alpha.1"
|
|
46
|
+
spec.add_dependency "relaton-ietf", "~> 2.0.0-alpha.2"
|
|
47
|
+
spec.add_dependency "relaton-iho", "~> 2.0.0-alpha.2"
|
|
48
|
+
spec.add_dependency "relaton-isbn", "~> 2.0.0-alpha.1"
|
|
49
|
+
spec.add_dependency "relaton-iso", "~> 2.0.0-alpha.2"
|
|
50
|
+
spec.add_dependency "relaton-itu", "~> 2.0.0-alpha.2"
|
|
51
|
+
spec.add_dependency "relaton-jis", "~> 2.0.0-alpha.1"
|
|
52
|
+
spec.add_dependency "relaton-nist", "~> 2.0.0-alpha.2"
|
|
53
|
+
spec.add_dependency "relaton-oasis", "~> 2.0.0-alpha.2"
|
|
54
|
+
spec.add_dependency "relaton-ogc", "~> 2.0.0-alpha.2"
|
|
55
|
+
spec.add_dependency "relaton-omg", "~> 2.0.0-alpha.1"
|
|
56
|
+
spec.add_dependency "relaton-plateau", "~> 2.0.0-alpha.1"
|
|
57
|
+
spec.add_dependency "relaton-un", "~> 2.0.0-alpha.1"
|
|
58
|
+
spec.add_dependency "relaton-w3c", "~> 2.0.0-alpha.2"
|
|
59
|
+
spec.add_dependency "relaton-xsf", "~> 2.0.0-alpha.1"
|
|
60
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
|
61
61
|
end
|
|
@@ -18,7 +18,7 @@ RSpec.describe Relaton::DbCache do
|
|
|
18
18
|
dir = "testcache/iso"
|
|
19
19
|
FileUtils.mkdir_p dir
|
|
20
20
|
file_name = File.join dir, "iso_123.xml"
|
|
21
|
-
file = File.open
|
|
21
|
+
file = File.open(file_name, File::RDWR | File::CREAT, encoding: "UTF-8") # rubocop:disable Style/FileOpen
|
|
22
22
|
file.flock File::LOCK_EX
|
|
23
23
|
command = <<~RBY
|
|
24
24
|
require "relaton"
|