Sha256: a22137c66cc6336817fb450983ca1b559bc0ca449de8f68149fbbcb0419df8f3

Contents?: true

Size: 1.41 KB

Versions: 18

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

module RelatonUn
  # Class methods for search ISO standards.
  class UnBibliography
    class << self
      # @param text [String]
      # @return [RelatonUn::HitCollection]
      def search(text)
        HitCollection.new text
      rescue SocketError, Errno::EINVAL, Errno::ECONNRESET, EOFError,
             Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
             Net::ProtocolError, Net::ReadTimeout, OpenSSL::SSL::SSLError,
             Errno::ETIMEDOUT => e
        raise RelatonBib::RequestError,
              "Could not access #{HitCollection::DOMAIN}: #{e.message}"
      end

      # @param ref [String] document reference
      # @param year [String, NilClass]
      # @param opts [Hash] options
      # @return [RelatonUn::UnBibliographicItem]
      def get(ref, _year = nil, _opts = {})
        warn "[relaton-un] (\"#{ref}\") fetching..."
        /^(UN\s)?(?<code>.*)/ =~ ref
        result = isobib_search_filter(code)
        if result
          warn "[relaton-un] (\"#{ref}\") "\
            "found #{result.fetch.docidentifier[0].id}"
          result.fetch
        end
      end

      private

      # Search for hits.
      #
      # @param code [String] reference without correction
      # @return [RelatonUn::HitCollection]
      def isobib_search_filter(code)
        result = search(code)
        result.select { |i| i.hit[:symbol].include? code }.first
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
relaton-un-1.8.0 lib/relaton_un/un_bibliography.rb
relaton-un-1.7.2 lib/relaton_un/un_bibliography.rb
relaton-un-1.7.1 lib/relaton_un/un_bibliography.rb
relaton-un-1.7.0 lib/relaton_un/un_bibliography.rb
relaton-un-1.6.0 lib/relaton_un/un_bibliography.rb
relaton-un-1.6.pre1 lib/relaton_un/un_bibliography.rb
relaton-un-1.5.0 lib/relaton_un/un_bibliography.rb
relaton-un-1.5.pre lib/relaton_un/un_bibliography.rb
relaton-un-1.4.0 lib/relaton_un/un_bibliography.rb
relaton-un-1.3.0 lib/relaton_un/un_bibliography.rb
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/relaton-un-1.2.1/lib/relaton_un/un_bibliography.rb
metanorma-cli-1.3.3.1 gems/ruby/2.6.0/gems/relaton-un-1.2.1/lib/relaton_un/un_bibliography.rb
relaton-un-1.2.1 lib/relaton_un/un_bibliography.rb
relaton-un-1.2.0 lib/relaton_un/un_bibliography.rb
relaton-un-1.1.0 lib/relaton_un/un_bibliography.rb
relaton-un-1.0.1 lib/relaton_un/un_bibliography.rb
relaton-un-1.0.0 lib/relaton_un/un_bibliography.rb
relaton-un-0.2.1 lib/relaton_un/un_bibliography.rb