relaton-bipm 1.14.1 → 1.14.3
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/.gitignore +1 -0
- data/Gemfile +6 -0
- data/README.adoc +32 -12
- data/grammars/basicdoc.rng +0 -1
- data/grammars/biblio.rng +12 -2
- data/lib/relaton_bipm/bipm_bibliography.rb +12 -310
- data/lib/relaton_bipm/bipm_si_brochure_parser.rb +8 -4
- data/lib/relaton_bipm/comment_periond.rb +1 -1
- data/lib/relaton_bipm/data_fetcher.rb +17 -5
- data/lib/relaton_bipm/data_outcomes_parser.rb +68 -29
- data/lib/relaton_bipm/id_parser.rb +134 -0
- data/lib/relaton_bipm/processor.rb +5 -4
- data/lib/relaton_bipm/rawdata_bipm_metrologia/article_parser.rb +311 -0
- data/lib/relaton_bipm/rawdata_bipm_metrologia/fetcher.rb +176 -0
- data/lib/relaton_bipm/version.rb +1 -1
- data/lib/relaton_bipm.rb +5 -1
- data/relaton_bipm.gemspec +2 -6
- metadata +26 -80
- data/lib/relaton_bipm/index.rb +0 -68
| @@ -0,0 +1,176 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RelatonBipm
         | 
| 4 | 
            +
              module RawdataBipmMetrologia
         | 
| 5 | 
            +
                class Fetcher
         | 
| 6 | 
            +
                  DIR = "rawdata-bipm-metrologia/data/*content/0026-1394"
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  # @param data_fetcher [RelatonBipm::DataFetcher]
         | 
| 9 | 
            +
                  def self.fetch(data_fetcher)
         | 
| 10 | 
            +
                    new(data_fetcher).fetch
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  # @param data_fetcher [RelatonBipm::DataFetcher]
         | 
| 14 | 
            +
                  def initialize(data_fetcher)
         | 
| 15 | 
            +
                    @data_fetcher = WeakRef.new data_fetcher
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  #
         | 
| 19 | 
            +
                  # Fetch documents from rawdata-bipm-metrologia and save to files
         | 
| 20 | 
            +
                  #
         | 
| 21 | 
            +
                  def fetch
         | 
| 22 | 
            +
                    fetch_metrologia
         | 
| 23 | 
            +
                    fetch_volumes
         | 
| 24 | 
            +
                    fetch_issues
         | 
| 25 | 
            +
                    fetch_articles
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  #
         | 
| 29 | 
            +
                  # Fetch articles from rawdata-bipm-metrologia and save to files
         | 
| 30 | 
            +
                  #
         | 
| 31 | 
            +
                  def fetch_articles # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
         | 
| 32 | 
            +
                    Dir["#{DIR}/**/*.xml"].each do |path|
         | 
| 33 | 
            +
                      doc = Nokogiri::XML File.read(path, encoding: "UTF-8")
         | 
| 34 | 
            +
                      item = ArticleParser.parse doc.at("/article")
         | 
| 35 | 
            +
                      file = "#{item.docidentifier.first.id.downcase.gsub(' ', '-')}.#{@data_fetcher.ext}"
         | 
| 36 | 
            +
                      out_path = File.join(@data_fetcher.output, file)
         | 
| 37 | 
            +
                      @data_fetcher.index[[item.docidentifier.first.id]] = out_path
         | 
| 38 | 
            +
                      @data_fetcher.index_new.add_or_update [item.docidentifier.first.id], out_path
         | 
| 39 | 
            +
                      key = Id.new(item.docidentifier.first.id).normalized_hash
         | 
| 40 | 
            +
                      @data_fetcher.index2.add_or_update key, out_path
         | 
| 41 | 
            +
                      @data_fetcher.write_file out_path, item
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  #
         | 
| 46 | 
            +
                  # Fetch volumes from rawdata-bipm-metrologia and save to files
         | 
| 47 | 
            +
                  #
         | 
| 48 | 
            +
                  def fetch_volumes
         | 
| 49 | 
            +
                    Dir["#{DIR}/*"].map { |path| path.split("/").last }.uniq.each do |volume|
         | 
| 50 | 
            +
                      fetch_metrologia volume
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  #
         | 
| 55 | 
            +
                  # Fetch issues from rawdata-bipm-metrologia and save to files
         | 
| 56 | 
            +
                  #
         | 
| 57 | 
            +
                  def fetch_issues
         | 
| 58 | 
            +
                    Dir["#{DIR}/*/*"].each do |path|
         | 
| 59 | 
            +
                      volume, issue = path.split("/").last(2)
         | 
| 60 | 
            +
                      fetch_metrologia volume, issue
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  #
         | 
| 65 | 
            +
                  # Fetch metrologia root document from rawdata-bipm-metrologia and save to a file
         | 
| 66 | 
            +
                  #
         | 
| 67 | 
            +
                  # @overload set(volume, issue)
         | 
| 68 | 
            +
                  #   @param [String] volume volume number
         | 
| 69 | 
            +
                  #   @param [String] issue issue number
         | 
| 70 | 
            +
                  # @overload set(volume)
         | 
| 71 | 
            +
                  #   @param [String] volume volume number
         | 
| 72 | 
            +
                  #
         | 
| 73 | 
            +
                  def fetch_metrologia(*args) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
         | 
| 74 | 
            +
                    id = identifier(*args)
         | 
| 75 | 
            +
                    item = BipmBibliographicItem.new(
         | 
| 76 | 
            +
                      type: "article", formattedref: formattedref(id), docid: docidentifier(id),
         | 
| 77 | 
            +
                      language: ["en"], script: ["Latn"], relation: relation(*args),
         | 
| 78 | 
            +
                      link: typed_uri(*args)
         | 
| 79 | 
            +
                    )
         | 
| 80 | 
            +
                    file = "#{id.downcase.gsub(' ', '-')}.#{@data_fetcher.ext}"
         | 
| 81 | 
            +
                    path = File.join(@data_fetcher.output, file)
         | 
| 82 | 
            +
                    @data_fetcher.index[[id]] = path
         | 
| 83 | 
            +
                    @data_fetcher.index_new.add_or_update [id], path
         | 
| 84 | 
            +
                    @data_fetcher.index2.add_or_update Id.new(id).normalized_hash, path
         | 
| 85 | 
            +
                    @data_fetcher.write_file path, item
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                  #
         | 
| 89 | 
            +
                  # Create formattedref
         | 
| 90 | 
            +
                  #
         | 
| 91 | 
            +
                  # @param [String] id document identifier
         | 
| 92 | 
            +
                  #
         | 
| 93 | 
            +
                  # @return [RelatonBib::FormattedRef] formattedref
         | 
| 94 | 
            +
                  #
         | 
| 95 | 
            +
                  def formattedref(id)
         | 
| 96 | 
            +
                    RelatonBib::FormattedRef.new content: id, language: "en", script: "Latn"
         | 
| 97 | 
            +
                  end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                  #
         | 
| 100 | 
            +
                  # Create docidentifier
         | 
| 101 | 
            +
                  #
         | 
| 102 | 
            +
                  # @param [String] id document identifier
         | 
| 103 | 
            +
                  #
         | 
| 104 | 
            +
                  # @return [Array<RelatonBib::DocumentIdentifier>] docidentifier
         | 
| 105 | 
            +
                  #
         | 
| 106 | 
            +
                  def docidentifier(id)
         | 
| 107 | 
            +
                    [RelatonBib::DocumentIdentifier.new(id: id, type: "BIPM", primary: true)]
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                  #
         | 
| 111 | 
            +
                  # Create identifier
         | 
| 112 | 
            +
                  #
         | 
| 113 | 
            +
                  # @overload set(volume, issue, article)
         | 
| 114 | 
            +
                  #   @param [String] volume volume number
         | 
| 115 | 
            +
                  #   @param [String] issue issue number
         | 
| 116 | 
            +
                  #   @param [String] article article number
         | 
| 117 | 
            +
                  # @overload set(volume, issue)
         | 
| 118 | 
            +
                  #   @param [String] volume volume number
         | 
| 119 | 
            +
                  #   @param [String] issue issue number
         | 
| 120 | 
            +
                  # @overload set(volume)
         | 
| 121 | 
            +
                  #   @param [String] volume volume number
         | 
| 122 | 
            +
                  #
         | 
| 123 | 
            +
                  # @return [String] document identifier
         | 
| 124 | 
            +
                  #
         | 
| 125 | 
            +
                  def identifier(*args)
         | 
| 126 | 
            +
                    ["Metrologia", *id_parts(*args)].join(" ")
         | 
| 127 | 
            +
                  end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                  def id_parts(*args)
         | 
| 130 | 
            +
                    args.map { |p| p.match(/[^_]+$/).to_s }
         | 
| 131 | 
            +
                  end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                  #
         | 
| 134 | 
            +
                  # Fetch relations
         | 
| 135 | 
            +
                  #
         | 
| 136 | 
            +
                  # @param (see #fetch_metrologia)
         | 
| 137 | 
            +
                  #
         | 
| 138 | 
            +
                  # @return [Array<RelatonBib::DocumentRelation>] relations
         | 
| 139 | 
            +
                  #
         | 
| 140 | 
            +
                  def relation(*args)
         | 
| 141 | 
            +
                    dir = [DIR, *args].join("/")
         | 
| 142 | 
            +
                    Dir["#{dir}/*"].map do |path|
         | 
| 143 | 
            +
                      part = path.split("/").last
         | 
| 144 | 
            +
                      id = identifier(*args, part)
         | 
| 145 | 
            +
                      RelatonBib::DocumentRelation.new(type: "partOf", bibitem: rel_bibitem(id))
         | 
| 146 | 
            +
                    end
         | 
| 147 | 
            +
                  end
         | 
| 148 | 
            +
             | 
| 149 | 
            +
                  #
         | 
| 150 | 
            +
                  # Create relation bibitem
         | 
| 151 | 
            +
                  #
         | 
| 152 | 
            +
                  # @param [String] id document identifier
         | 
| 153 | 
            +
                  #
         | 
| 154 | 
            +
                  # @return [RelatonBipm::BipmBibliographicItem] bibitem
         | 
| 155 | 
            +
                  #
         | 
| 156 | 
            +
                  def rel_bibitem(id)
         | 
| 157 | 
            +
                    BipmBibliographicItem.new(
         | 
| 158 | 
            +
                      formattedref: formattedref(id), docid: docidentifier(id),
         | 
| 159 | 
            +
                    )
         | 
| 160 | 
            +
                  end
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                  def typed_uri(*args)
         | 
| 163 | 
            +
                    [RelatonBib::TypedUri.new(type: "src", content: link(*args))]
         | 
| 164 | 
            +
                  end
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                  def link(*args)
         | 
| 167 | 
            +
                    params = id_parts(*args).join("/")
         | 
| 168 | 
            +
                    case args.size
         | 
| 169 | 
            +
                    when 0 then "https://iopscience.iop.org/journal/0026-1394"
         | 
| 170 | 
            +
                    when 1 then "https://iopscience.iop.org/volume/0026-1394/#{params}"
         | 
| 171 | 
            +
                    when 2 then "https://iopscience.iop.org/issue/0026-1394/#{params}"
         | 
| 172 | 
            +
                    end
         | 
| 173 | 
            +
                  end
         | 
| 174 | 
            +
                end
         | 
| 175 | 
            +
              end
         | 
| 176 | 
            +
            end
         | 
    
        data/lib/relaton_bipm/version.rb
    CHANGED
    
    
    
        data/lib/relaton_bipm.rb
    CHANGED
    
    | @@ -1,6 +1,9 @@ | |
| 1 1 | 
             
            require "zip"
         | 
| 2 2 | 
             
            require "fileutils"
         | 
| 3 | 
            +
            require "parslet"
         | 
| 3 4 | 
             
            require "relaton_bib"
         | 
| 5 | 
            +
            require "relaton/index"
         | 
| 6 | 
            +
            require "relaton_bipm/id_parser"
         | 
| 4 7 | 
             
            require "relaton_bipm/version"
         | 
| 5 8 | 
             
            require "relaton_bipm/editorial_group"
         | 
| 6 9 | 
             
            require "relaton_bipm/committee"
         | 
| @@ -13,10 +16,11 @@ require "relaton_bipm/bipm_bibliographic_item" | |
| 13 16 | 
             
            require "relaton_bipm/bipm_bibliography"
         | 
| 14 17 | 
             
            require "relaton_bipm/hash_converter"
         | 
| 15 18 | 
             
            require "relaton_bipm/xml_parser"
         | 
| 16 | 
            -
            require "relaton_bipm/index"
         | 
| 17 19 | 
             
            require "relaton_bipm/data_fetcher"
         | 
| 18 20 | 
             
            require "relaton_bipm/data_outcomes_parser"
         | 
| 19 21 | 
             
            require "relaton_bipm/bipm_si_brochure_parser"
         | 
| 22 | 
            +
            require "relaton_bipm/rawdata_bipm_metrologia/fetcher"
         | 
| 23 | 
            +
            require "relaton_bipm/rawdata_bipm_metrologia/article_parser"
         | 
| 20 24 |  | 
| 21 25 | 
             
            module RelatonBipm
         | 
| 22 26 | 
             
              class Error < StandardError; end
         | 
    
        data/relaton_bipm.gemspec
    CHANGED
    
    | @@ -32,17 +32,13 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength | |
| 32 32 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 33 33 | 
             
              spec.require_paths = ["lib"]
         | 
| 34 34 |  | 
| 35 | 
            -
              spec.add_development_dependency "byebug"
         | 
| 36 35 | 
             
              spec.add_development_dependency "equivalent-xml", "~> 0.6"
         | 
| 37 | 
            -
              spec.add_development_dependency "pry-byebug"
         | 
| 38 | 
            -
              spec.add_development_dependency "ruby-jing"
         | 
| 39 | 
            -
              spec.add_development_dependency "simplecov"
         | 
| 40 | 
            -
              spec.add_development_dependency "vcr"
         | 
| 41 | 
            -
              spec.add_development_dependency "webmock"
         | 
| 42 36 |  | 
| 43 37 | 
             
              spec.add_dependency "faraday", "~> 1.0"
         | 
| 44 38 | 
             
              spec.add_dependency "mechanize", "~> 2.8.0"
         | 
| 39 | 
            +
              spec.add_dependency "parslet", "~> 2.0.0"
         | 
| 45 40 | 
             
              spec.add_dependency "relaton-bib", "~> 1.14.0"
         | 
| 41 | 
            +
              spec.add_dependency "relaton-index", "~> 0.1.0"
         | 
| 46 42 | 
             
              spec.add_dependency "rubyzip", "~> 2.3.0"
         | 
| 47 43 | 
             
              spec.add_dependency "serrano", "~> 1.0"
         | 
| 48 44 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,29 +1,15 @@ | |
| 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.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ribose Inc.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2023-03-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name: byebug
         | 
| 15 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            -
                requirements:
         | 
| 17 | 
            -
                - - ">="
         | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '0'
         | 
| 20 | 
            -
              type: :development
         | 
| 21 | 
            -
              prerelease: false
         | 
| 22 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            -
                requirements:
         | 
| 24 | 
            -
                - - ">="
         | 
| 25 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '0'
         | 
| 27 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 14 | 
             
              name: equivalent-xml
         | 
| 29 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -39,117 +25,75 @@ dependencies: | |
| 39 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 26 | 
             
                    version: '0.6'
         | 
| 41 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name:  | 
| 43 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            -
                requirements:
         | 
| 45 | 
            -
                - - ">="
         | 
| 46 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: '0'
         | 
| 48 | 
            -
              type: :development
         | 
| 49 | 
            -
              prerelease: false
         | 
| 50 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            -
                requirements:
         | 
| 52 | 
            -
                - - ">="
         | 
| 53 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: '0'
         | 
| 55 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name: ruby-jing
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - ">="
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '0'
         | 
| 62 | 
            -
              type: :development
         | 
| 63 | 
            -
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                requirements:
         | 
| 66 | 
            -
                - - ">="
         | 
| 67 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '0'
         | 
| 69 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name: simplecov
         | 
| 71 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            -
                requirements:
         | 
| 73 | 
            -
                - - ">="
         | 
| 74 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: '0'
         | 
| 76 | 
            -
              type: :development
         | 
| 77 | 
            -
              prerelease: false
         | 
| 78 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            -
                requirements:
         | 
| 80 | 
            -
                - - ">="
         | 
| 81 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: '0'
         | 
| 83 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name: vcr
         | 
| 28 | 
            +
              name: faraday
         | 
| 85 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 30 | 
             
                requirements:
         | 
| 87 | 
            -
                - - " | 
| 31 | 
            +
                - - "~>"
         | 
| 88 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: '0'
         | 
| 90 | 
            -
              type: : | 
| 33 | 
            +
                    version: '1.0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 91 35 | 
             
              prerelease: false
         | 
| 92 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 37 | 
             
                requirements:
         | 
| 94 | 
            -
                - - " | 
| 38 | 
            +
                - - "~>"
         | 
| 95 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '0'
         | 
| 40 | 
            +
                    version: '1.0'
         | 
| 97 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name:  | 
| 42 | 
            +
              name: mechanize
         | 
| 99 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 44 | 
             
                requirements:
         | 
| 101 | 
            -
                - - " | 
| 45 | 
            +
                - - "~>"
         | 
| 102 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version:  | 
| 104 | 
            -
              type: : | 
| 47 | 
            +
                    version: 2.8.0
         | 
| 48 | 
            +
              type: :runtime
         | 
| 105 49 | 
             
              prerelease: false
         | 
| 106 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 51 | 
             
                requirements:
         | 
| 108 | 
            -
                - - " | 
| 52 | 
            +
                - - "~>"
         | 
| 109 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version:  | 
| 54 | 
            +
                    version: 2.8.0
         | 
| 111 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            -
              name:  | 
| 56 | 
            +
              name: parslet
         | 
| 113 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 58 | 
             
                requirements:
         | 
| 115 59 | 
             
                - - "~>"
         | 
| 116 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version:  | 
| 61 | 
            +
                    version: 2.0.0
         | 
| 118 62 | 
             
              type: :runtime
         | 
| 119 63 | 
             
              prerelease: false
         | 
| 120 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 65 | 
             
                requirements:
         | 
| 122 66 | 
             
                - - "~>"
         | 
| 123 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version:  | 
| 68 | 
            +
                    version: 2.0.0
         | 
| 125 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 | 
            -
              name:  | 
| 70 | 
            +
              name: relaton-bib
         | 
| 127 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 72 | 
             
                requirements:
         | 
| 129 73 | 
             
                - - "~>"
         | 
| 130 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            -
                    version:  | 
| 75 | 
            +
                    version: 1.14.0
         | 
| 132 76 | 
             
              type: :runtime
         | 
| 133 77 | 
             
              prerelease: false
         | 
| 134 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 79 | 
             
                requirements:
         | 
| 136 80 | 
             
                - - "~>"
         | 
| 137 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            -
                    version:  | 
| 82 | 
            +
                    version: 1.14.0
         | 
| 139 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 140 | 
            -
              name: relaton- | 
| 84 | 
            +
              name: relaton-index
         | 
| 141 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 142 86 | 
             
                requirements:
         | 
| 143 87 | 
             
                - - "~>"
         | 
| 144 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version: 1. | 
| 89 | 
            +
                    version: 0.1.0
         | 
| 146 90 | 
             
              type: :runtime
         | 
| 147 91 | 
             
              prerelease: false
         | 
| 148 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 93 | 
             
                requirements:
         | 
| 150 94 | 
             
                - - "~>"
         | 
| 151 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version: 1. | 
| 96 | 
            +
                    version: 0.1.0
         | 
| 153 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 154 98 | 
             
              name: rubyzip
         | 
| 155 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -216,8 +160,10 @@ files: | |
| 216 160 | 
             
            - lib/relaton_bipm/document_relation.rb
         | 
| 217 161 | 
             
            - lib/relaton_bipm/editorial_group.rb
         | 
| 218 162 | 
             
            - lib/relaton_bipm/hash_converter.rb
         | 
| 219 | 
            -
            - lib/relaton_bipm/ | 
| 163 | 
            +
            - lib/relaton_bipm/id_parser.rb
         | 
| 220 164 | 
             
            - lib/relaton_bipm/processor.rb
         | 
| 165 | 
            +
            - lib/relaton_bipm/rawdata_bipm_metrologia/article_parser.rb
         | 
| 166 | 
            +
            - lib/relaton_bipm/rawdata_bipm_metrologia/fetcher.rb
         | 
| 221 167 | 
             
            - lib/relaton_bipm/structured_identifier.rb
         | 
| 222 168 | 
             
            - lib/relaton_bipm/version.rb
         | 
| 223 169 | 
             
            - lib/relaton_bipm/workgroup.rb
         | 
    
        data/lib/relaton_bipm/index.rb
    DELETED
    
    | @@ -1,68 +0,0 @@ | |
| 1 | 
            -
            module RelatonBipm
         | 
| 2 | 
            -
              class Index
         | 
| 3 | 
            -
                #
         | 
| 4 | 
            -
                # Initialize index
         | 
| 5 | 
            -
                #
         | 
| 6 | 
            -
                def initialize
         | 
| 7 | 
            -
                  read_index_file || get_index_from_gh
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                #
         | 
| 11 | 
            -
                # Search index entry
         | 
| 12 | 
            -
                #
         | 
| 13 | 
            -
                # @param [String] ref reference
         | 
| 14 | 
            -
                #
         | 
| 15 | 
            -
                # @return [String] path to document file
         | 
| 16 | 
            -
                #
         | 
| 17 | 
            -
                def search(ref)
         | 
| 18 | 
            -
                  @index.detect { |key, _| key.include? ref }&.last
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                private
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                #
         | 
| 24 | 
            -
                # Create dir if need and return path to index file
         | 
| 25 | 
            -
                #
         | 
| 26 | 
            -
                # @return [String] path to index file
         | 
| 27 | 
            -
                #
         | 
| 28 | 
            -
                def path
         | 
| 29 | 
            -
                  @path ||= begin
         | 
| 30 | 
            -
                    dir = File.join Dir.home, ".relaton", "bipm"
         | 
| 31 | 
            -
                    FileUtils.mkdir_p dir
         | 
| 32 | 
            -
                    File.join dir, "index.yaml"
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
                end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                #
         | 
| 37 | 
            -
                # Read index from file if it exists and not outdated
         | 
| 38 | 
            -
                #
         | 
| 39 | 
            -
                # @return [Hash, nil] index content
         | 
| 40 | 
            -
                #
         | 
| 41 | 
            -
                def read_index_file
         | 
| 42 | 
            -
                  return if !File.exist?(path) || File.ctime(path).to_date < Date.today
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                  @index = RelatonBib.parse_yaml File.read(path, encoding: "UTF-8")
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                #
         | 
| 48 | 
            -
                # Save index to file
         | 
| 49 | 
            -
                #
         | 
| 50 | 
            -
                # @return [<Type>] <description>
         | 
| 51 | 
            -
                #
         | 
| 52 | 
            -
                def save_index_file
         | 
| 53 | 
            -
                  File.write path, @index.to_yaml, encoding: "UTF-8"
         | 
| 54 | 
            -
                end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                #
         | 
| 57 | 
            -
                # Get index from a GitHub repository
         | 
| 58 | 
            -
                #
         | 
| 59 | 
            -
                # @return [Hash] index content
         | 
| 60 | 
            -
                #
         | 
| 61 | 
            -
                def get_index_from_gh # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
         | 
| 62 | 
            -
                  resp = Zip::InputStream.new URI("#{BipmBibliography::GH_ENDPOINT}index.zip").open
         | 
| 63 | 
            -
                  zip = resp.get_next_entry
         | 
| 64 | 
            -
                  @index = RelatonBib.parse_yaml zip.get_input_stream.read
         | 
| 65 | 
            -
                  save_index_file
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
              end
         | 
| 68 | 
            -
            end
         |