relaton-bipm 1.14.6 → 1.14.7
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/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'
         
     |