Sha256: 8c3806d7e2350bccfde30924f302962721dc365a4cd438311723115e6d4a5af1

Contents?: true

Size: 1.11 KB

Versions: 9

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

module RelatonNist
  # Hit.
  class Hit < RelatonBib::Hit
    attr_writer :fetch

    #
    # Parse page.
    #
    # @return [RelatonNist::NistBliographicItem] bibliographic item
    #
    def fetch
      @fetch ||= Scrapper.parse_page @hit
    end

    #
    # Calculate sorting weigth of hit by series, code, title, addendum, and status
    #
    # @return [Iteger] sorting weigth
    #
    def sort_value # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
      @sort_value ||= begin
        sort_phrase = [hit[:series], hit[:code], hit[:title]].join " "
        corr = hit_collection&.text&.split&.map do |w|
          if w =~ /\w+/ &&
              sort_phrase =~ Regexp.new(Regexp.escape(w), Regexp::IGNORECASE)
            1
          else 0
          end
        end&.sum.to_i
        corr + case hit[:status]
               when "final" then 4
               when "withdrawn" then 3
               when "draft" then 2
               when "draft (obsolete)" then 1
               else 0
               end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
relaton-nist-1.14.6 lib/relaton_nist/hit.rb
relaton-nist-1.14.5 lib/relaton_nist/hit.rb
relaton-nist-1.14.4 lib/relaton_nist/hit.rb
relaton-nist-1.14.3 lib/relaton_nist/hit.rb
relaton-nist-1.14.2 lib/relaton_nist/hit.rb
relaton-nist-1.14.1 lib/relaton_nist/hit.rb
relaton-nist-1.14.0 lib/relaton_nist/hit.rb
relaton-nist-1.13.1 lib/relaton_nist/hit.rb
relaton-nist-1.13.0 lib/relaton_nist/hit.rb