relaton-bipm 1.14.6 → 1.14.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/relaton_bipm/bipm_si_brochure_parser.rb +0 -2
- data/lib/relaton_bipm/data_fetcher.rb +1 -6
- data/lib/relaton_bipm/data_outcomes_parser.rb +86 -63
- data/lib/relaton_bipm/id_parser.rb +3 -1
- data/lib/relaton_bipm/rawdata_bipm_metrologia/fetcher.rb +0 -4
- data/lib/relaton_bipm/version.rb +1 -1
- data/relaton_bipm.gemspec +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fca66f613215d88c2a6211038fa877a18c3239a6dc967058935d656f93a38bbf
|
4
|
+
data.tar.gz: 973ef9e8f3ae01e4a993c5b1fa5499cecd41c070b1ece0ec45b947d07e6bc009
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0387b51f65c91b25c0957ee23d4781de82914bf8e6e32fd03ec7aa6cfb0506648983cf724cfed09a061e3e01967863d24a2948c074b76e83a6cab852ee452028'
|
7
|
+
data.tar.gz: 9cec1161eb66bb984ae573b0b880da67b4085b574acae5c6f44c80669a2f57f10ab422bbd7a54e419f65c159925ccf1815f08ac1ace269e2ac0808cce1e10791
|
@@ -36,8 +36,6 @@ module RelatonBipm
|
|
36
36
|
basename = File.join @data_fetcher.output, File.basename(f).sub(/(?:-(?:en|fr))?\.rxl$/, "")
|
37
37
|
outfile = "#{basename}.#{@data_fetcher.ext}"
|
38
38
|
key = hash1["docnumber"] || basename
|
39
|
-
@data_fetcher.index[[key]] = outfile
|
40
|
-
@data_fetcher.index_new.add_or_update [key], outfile
|
41
39
|
@data_fetcher.index2.add_or_update Id.new(key).to_hash, outfile
|
42
40
|
hash = if File.exist? outfile
|
43
41
|
warn_duplicate = false
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module RelatonBipm
|
2
2
|
class DataFetcher
|
3
|
-
attr_reader :output, :format, :ext, :files, :
|
3
|
+
attr_reader :output, :format, :ext, :files, :index2
|
4
4
|
|
5
5
|
#
|
6
6
|
# Initialize fetcher
|
@@ -13,9 +13,6 @@ module RelatonBipm
|
|
13
13
|
@format = format
|
14
14
|
@ext = format.sub(/^bib/, "")
|
15
15
|
@files = []
|
16
|
-
@index_path = "index.yaml"
|
17
|
-
@index = File.exist?(@index_path) ? YAML.load_file(@index_path) : {}
|
18
|
-
@index_new = Relaton::Index.find_or_create :BIPM, file: "index-bipm.yaml"
|
19
16
|
@index2 = Relaton::Index.find_or_create :BIPM, file: "index2.yaml"
|
20
17
|
end
|
21
18
|
|
@@ -47,8 +44,6 @@ module RelatonBipm
|
|
47
44
|
when "bipm-si-brochure" then BipmSiBrochureParser.parse(self)
|
48
45
|
when "rawdata-bipm-metrologia" then RawdataBipmMetrologia::Fetcher.fetch(self)
|
49
46
|
end
|
50
|
-
File.write @index_path, index.to_yaml, encoding: "UTF-8"
|
51
|
-
index_new.save
|
52
47
|
index2.save
|
53
48
|
end
|
54
49
|
|
@@ -61,7 +61,7 @@ module RelatonBipm
|
|
61
61
|
# @param [String] body name of body
|
62
62
|
#
|
63
63
|
def fetch_type(dir, body) # rubocop:disable Metrics/AbcSize
|
64
|
-
type = dir.split("/").last.split("-").first.sub(/s$/, "")
|
64
|
+
type = dir.split("/").last.split("-").first.sub(/s$/, "").capitalize
|
65
65
|
body_dir = File.join @data_fetcher.output, body.downcase
|
66
66
|
FileUtils.mkdir_p body_dir
|
67
67
|
outdir = File.join body_dir, type.downcase
|
@@ -74,7 +74,7 @@ module RelatonBipm
|
|
74
74
|
#
|
75
75
|
# @param [String] en_file Path to English file
|
76
76
|
# @param [String] body Body name
|
77
|
-
# @param [String] type
|
77
|
+
# @param [String] type meeting
|
78
78
|
# @param [String] dir output directory
|
79
79
|
#
|
80
80
|
def fetch_meeting(en_file, body, type, dir) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
@@ -84,7 +84,7 @@ module RelatonBipm
|
|
84
84
|
|
85
85
|
file = "#{num}.#{@data_fetcher.ext}"
|
86
86
|
path = File.join dir, file
|
87
|
-
hash =
|
87
|
+
hash = meeting_bibitem body: body, type: type, en: en_md, fr: fr_md, num: num, src: src, pdf: en["pdf"]
|
88
88
|
if @data_fetcher.files.include?(path) && part
|
89
89
|
add_part hash, part
|
90
90
|
item = RelatonBipm::BipmBibliographicItem.new(**hash)
|
@@ -95,7 +95,7 @@ module RelatonBipm
|
|
95
95
|
path = File.join dir, "#{num}-#{part}.#{@data_fetcher.ext}"
|
96
96
|
elsif part
|
97
97
|
hash[:title].each { |t| t[:content] = t[:content].sub(/\s\(.+\)$/, "") }
|
98
|
-
h =
|
98
|
+
h = meeting_bibitem body: body, type: type, en: en_md, fr: fr_md, num: num, src: src, pdf: en["pdf"]
|
99
99
|
add_part h, part
|
100
100
|
part_item = RelatonBipm::BipmBibliographicItem.new(**h)
|
101
101
|
part_item_path = File.join dir, "#{num}-#{part}.#{@data_fetcher.ext}"
|
@@ -171,9 +171,9 @@ module RelatonBipm
|
|
171
171
|
num = "0" if num == year
|
172
172
|
num_justed = num.rjust 2, "0"
|
173
173
|
type = r["type"].capitalize
|
174
|
-
docnum =
|
174
|
+
docnum = create_resolution_docnum args[:body], type, num, date
|
175
175
|
hash[:id] = create_id(args[:body], type, num_justed, date)
|
176
|
-
hash[:docid] =
|
176
|
+
hash[:docid] = create_resolution_docids args[:body], type, num, date
|
177
177
|
hash[:docnumber] = docnum
|
178
178
|
hash[:language] = %w[en fr]
|
179
179
|
hash[:script] = ["Latn"]
|
@@ -230,11 +230,8 @@ module RelatonBipm
|
|
230
230
|
# @param [String] path path to YAML file
|
231
231
|
#
|
232
232
|
def add_to_index(item, path) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
233
|
-
key = item.
|
234
|
-
@data_fetcher.
|
235
|
-
@data_fetcher.index_new.add_or_update key, path
|
236
|
-
key2 = Id.new(item.docnumber).to_hash
|
237
|
-
@data_fetcher.index2.add_or_update key2, path
|
233
|
+
key = Id.new(item.docnumber).to_hash
|
234
|
+
@data_fetcher.index2.add_or_update key, path
|
238
235
|
end
|
239
236
|
|
240
237
|
#
|
@@ -373,20 +370,20 @@ module RelatonBipm
|
|
373
370
|
end
|
374
371
|
|
375
372
|
#
|
376
|
-
# Create hash from BIPM meeting
|
373
|
+
# Create hash from BIPM meeting
|
377
374
|
#
|
378
375
|
# @param [Hash] **args Hash of arguments
|
379
|
-
# @option args [String] :type
|
376
|
+
# @option args [String] :type meeting
|
380
377
|
# @option args [Hash] :en Hash of English metadata
|
381
378
|
# @option args [Hash] :fr Hash of French metadata
|
382
|
-
# @option args [String] :id ID of meeting
|
383
|
-
# @option args [String] :num Number of meeting
|
379
|
+
# @option args [String] :id ID of meeting
|
380
|
+
# @option args [String] :num Number of meeting
|
384
381
|
# @option args [Array<Hash>] :src Array of links to bipm-data-outcomes
|
385
382
|
# @option args [String] :pdf link to PDF
|
386
383
|
#
|
387
384
|
# @return [Hash] Hash of BIPM meeting/resolution
|
388
385
|
#
|
389
|
-
def
|
386
|
+
def meeting_bibitem(**args) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
|
390
387
|
docnum = create_meeting_docnum args[:body], args[:type], args[:num], args[:en]["date"]
|
391
388
|
hash = { title: [], type: "proceedings", doctype: args[:type],
|
392
389
|
place: [RelatonBib::Place.new(city: "Paris")] }
|
@@ -428,49 +425,51 @@ module RelatonBipm
|
|
428
425
|
end
|
429
426
|
|
430
427
|
#
|
431
|
-
# Creata
|
428
|
+
# Creata resolution document number
|
432
429
|
#
|
433
|
-
# @param [
|
434
|
-
# @param [
|
435
|
-
# @param [
|
436
|
-
# @param [
|
430
|
+
# @param [String] body CIPM, CGPM, CCTF
|
431
|
+
# @param [String] type Recommendation, Resolution, Decision
|
432
|
+
# @param [String] num number of recommendation, resolution, decision
|
433
|
+
# @param [String] date date of publication
|
437
434
|
#
|
438
|
-
# @return [
|
435
|
+
# @return [String] document number
|
439
436
|
#
|
440
|
-
def
|
437
|
+
def create_resolution_docnum(body, type, num, date)
|
441
438
|
year = Date.parse(date).year
|
442
|
-
# if special_id_case? body, type, year
|
443
|
-
# id = "#{type.capitalize} #{body}"
|
444
|
-
# id += "/#{num}" if num.to_i.positive?
|
445
|
-
# else
|
446
439
|
id = "#{body} #{SHORTTYPE[type.capitalize]}"
|
447
440
|
id += " #{num}" if num.to_i.positive?
|
448
|
-
# end
|
449
441
|
"#{id} (#{year})"
|
450
442
|
end
|
451
443
|
|
444
|
+
#
|
445
|
+
# Create meeting document number
|
446
|
+
#
|
447
|
+
# @param [String] body CIPM, CGPM, CCTF
|
448
|
+
# @param [String] type meeting
|
449
|
+
# @param [String] num number of meeting
|
450
|
+
# @param [String] date date of publication
|
451
|
+
#
|
452
|
+
# @return [String] <description>
|
453
|
+
#
|
452
454
|
def create_meeting_docnum(body, type, num, date)
|
453
455
|
year = Date.parse(date).year
|
454
|
-
|
456
|
+
ord = %w[th st nd rd th th th th th th][num.to_i % 10]
|
457
|
+
"#{body} #{num}#{ord} #{type} (#{year})"
|
455
458
|
end
|
456
459
|
|
457
460
|
#
|
458
461
|
# Create ID
|
459
462
|
#
|
460
|
-
# @param [String] body
|
461
|
-
# @param [String] type
|
462
|
-
# @param [String, nil] num
|
463
|
+
# @param [String] body CIPM, CGPM, CCTF
|
464
|
+
# @param [String] type meeting, recommendation, resolution, decision
|
465
|
+
# @param [String, nil] num number of meeting, recommendation, resolution, decision
|
463
466
|
# @param [String] date published date
|
464
467
|
#
|
465
468
|
# @return [String] ID
|
466
469
|
#
|
467
470
|
def create_id(body, type, num, date)
|
468
471
|
year = Date.parse(date).year
|
469
|
-
# if special_id_case?(body, type, year)
|
470
|
-
# [type.capitalize, body, year]
|
471
|
-
# else
|
472
472
|
[body, SHORTTYPE[type.capitalize], year, num].compact.join("-")
|
473
|
-
# end
|
474
473
|
end
|
475
474
|
|
476
475
|
#
|
@@ -482,10 +481,10 @@ module RelatonBipm
|
|
482
481
|
#
|
483
482
|
# @return [Boolean] is special case
|
484
483
|
#
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
484
|
+
def special_id_case?(body, type, year)
|
485
|
+
(body == "CIPM" && type == "Decision" && year.to_i > 2011) ||
|
486
|
+
(body == "JCRB" && %w[Recomendation Resolution Descision].include?(type))
|
487
|
+
end
|
489
488
|
|
490
489
|
#
|
491
490
|
# Create documetn IDs
|
@@ -494,38 +493,62 @@ module RelatonBipm
|
|
494
493
|
#
|
495
494
|
# @return [Array<RelatonBib::DocumentIdentifier>] document IDs
|
496
495
|
#
|
497
|
-
def
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
]
|
496
|
+
def create_resolution_docids(body, type, num, date)
|
497
|
+
year = Date.parse(date).year
|
498
|
+
ids = []
|
499
|
+
resolution_short_ids(body, type, num, year) { |id| ids << id }
|
500
|
+
resolution_long_ids(body, type, num, year) { |id| ids << id }
|
501
|
+
end
|
502
|
+
|
503
|
+
def resolution_short_ids(body, type, num, year, &_block)
|
504
|
+
short_type = SHORTTYPE[type]
|
505
|
+
id = "#{body} #{short_type}"
|
506
|
+
id += " #{num}" if num.to_i.positive?
|
507
|
+
|
508
|
+
short = "#{id} (#{year})"
|
509
|
+
yield make_docid(id: short, type: "BIPM", primary: true)
|
510
|
+
|
511
|
+
en = "#{id} (#{year}, E)"
|
512
|
+
yield make_docid(id: en, type: "BIPM", primary: true, language: "en", script: "Latn")
|
513
|
+
|
514
|
+
fr = "#{id} (#{year}, F)"
|
515
|
+
yield make_docid(id: fr, type: "BIPM", primary: true, language: "fr", script: "Latn")
|
516
|
+
end
|
517
|
+
|
518
|
+
def resolution_long_ids(body, type, num, year, &_block)
|
519
|
+
en = "#{body} #{type}"
|
520
|
+
en += " #{num}" if num.to_i.positive?
|
521
|
+
en += " (#{year})"
|
522
|
+
yield make_docid id: en, type: "BIPM-long", language: "en", script: "Latn"
|
523
|
+
|
524
|
+
fr = resolution_fr_long_id(body, type, num, year)
|
525
|
+
yield make_docid id: fr, type: "BIPM-long", language: "fr", script: "Latn"
|
526
|
+
|
527
|
+
yield make_docid(id: "#{en} / #{fr}", type: "BIPM-long")
|
528
|
+
end
|
529
|
+
|
530
|
+
def resolution_fr_long_id(body, type, num, year)
|
531
|
+
fr = TRANSLATIONS[type] || type
|
532
|
+
if special_id_case? body, type, year
|
533
|
+
fr += " #{body}"
|
534
|
+
fr += "/#{num}" if num.to_i.positive?
|
535
|
+
else
|
536
|
+
fr += " #{num}" if num.to_i.positive?
|
537
|
+
fr += body == "CGPM" ? " de la" : " du"
|
538
|
+
fr += " #{body}"
|
539
|
+
end
|
540
|
+
"#{fr} (#{year})"
|
506
541
|
end
|
507
542
|
|
508
543
|
def create_meeting_docids(en_id)
|
509
|
-
fr_id = en_id.sub(/(\d+)th/, '\1e').sub("
|
544
|
+
fr_id = en_id.sub(/(\d+)(?:st|nd|rd|th)/, '\1e').sub("Meeting", "Réunion")
|
510
545
|
[
|
511
546
|
make_docid(id: en_id, type: "BIPM", primary: true, language: "en", script: "Latn"),
|
512
547
|
make_docid(id: fr_id, type: "BIPM", primary: true, language: "fr", script: "Latn"),
|
548
|
+
make_docid(id: "#{en_id} / #{fr_id}", type: "BIPM", primary: true),
|
513
549
|
]
|
514
550
|
end
|
515
551
|
|
516
|
-
#
|
517
|
-
# Create French document ID
|
518
|
-
#
|
519
|
-
# @param [String] en_id English document ID
|
520
|
-
#
|
521
|
-
# @return [RelatonBib::DocumentIdentifier] french document ID
|
522
|
-
#
|
523
|
-
# def create_docid_fr(en_id)
|
524
|
-
# tr = TRANSLATIONS.detect { |_, v| en_id.include? v }
|
525
|
-
# id = tr ? en_id.sub(tr[1], tr[0]) : en_id
|
526
|
-
# make_docid(id: id, type: "BIPM", primary: true, language: "fr", script: "Latn")
|
527
|
-
# end
|
528
|
-
|
529
552
|
#
|
530
553
|
# Create doucment ID
|
531
554
|
#
|
@@ -87,9 +87,11 @@ module RelatonBipm
|
|
87
87
|
#
|
88
88
|
# @return [Boolean] true if the two Id objects are equal
|
89
89
|
#
|
90
|
-
def ==(other)
|
90
|
+
def ==(other) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/AbcSize
|
91
91
|
other_hash = other.is_a?(Id) ? other.to_hash : normalize_hash(other)
|
92
92
|
hash = to_hash
|
93
|
+
hash.delete(:number) if other_hash[:number].nil? && hash[:number] == "1"
|
94
|
+
other_hash.delete(:number) if hash[:number].nil? && other_hash[:number] == "1"
|
93
95
|
hash.delete(:year) unless other_hash[:year]
|
94
96
|
other_hash.delete(:year) unless hash[:year]
|
95
97
|
hash.delete(:lang) unless other_hash[:lang]
|
@@ -33,8 +33,6 @@ module RelatonBipm
|
|
33
33
|
item = ArticleParser.parse path
|
34
34
|
file = "#{item.docidentifier.first.id.downcase.gsub(' ', '-')}.#{@data_fetcher.ext}"
|
35
35
|
out_path = File.join(@data_fetcher.output, file)
|
36
|
-
@data_fetcher.index[[item.docidentifier.first.id]] = out_path
|
37
|
-
@data_fetcher.index_new.add_or_update [item.docidentifier.first.id], out_path
|
38
36
|
key = Id.new(item.docidentifier.first.id).to_hash
|
39
37
|
@data_fetcher.index2.add_or_update key, out_path
|
40
38
|
@data_fetcher.write_file out_path, item
|
@@ -78,8 +76,6 @@ module RelatonBipm
|
|
78
76
|
)
|
79
77
|
file = "#{id.downcase.gsub(' ', '-')}.#{@data_fetcher.ext}"
|
80
78
|
path = File.join(@data_fetcher.output, file)
|
81
|
-
@data_fetcher.index[[id]] = path
|
82
|
-
@data_fetcher.index_new.add_or_update [id], path
|
83
79
|
@data_fetcher.index2.add_or_update Id.new(id).to_hash, path
|
84
80
|
@data_fetcher.write_file path, item
|
85
81
|
end
|
data/lib/relaton_bipm/version.rb
CHANGED
data/relaton_bipm.gemspec
CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
|
34
34
|
|
35
35
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
36
36
|
|
37
|
-
spec.add_dependency "faraday", "~>
|
37
|
+
spec.add_dependency "faraday", "~> 2.7.0"
|
38
38
|
spec.add_dependency "mechanize", "~> 2.8.0"
|
39
39
|
spec.add_dependency "parslet", "~> 2.0.0"
|
40
40
|
spec.add_dependency "relaton-bib", "~> 1.14.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-bipm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.14.
|
4
|
+
version: 1.14.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: equivalent-xml
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.7.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.7.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mechanize
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,7 +175,7 @@ licenses:
|
|
175
175
|
metadata:
|
176
176
|
homepage_uri: https://github.com/relaton/relaton-bipm
|
177
177
|
source_code_uri: https://github.com/relaton/relaton-bipm
|
178
|
-
post_install_message:
|
178
|
+
post_install_message:
|
179
179
|
rdoc_options: []
|
180
180
|
require_paths:
|
181
181
|
- lib
|
@@ -190,8 +190,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
190
|
- !ruby/object:Gem::Version
|
191
191
|
version: '0'
|
192
192
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
194
|
-
signing_key:
|
193
|
+
rubygems_version: 3.3.26
|
194
|
+
signing_key:
|
195
195
|
specification_version: 4
|
196
196
|
summary: 'RelatonBipm: retrieve BIPM Standards for bibliographic use using the BibliographicItem
|
197
197
|
model'
|