Module: Relaton::Jis::Bibliography

Extended by:
Bibliography
Included in:
Bibliography
Defined in:
lib/relaton/jis/bibliography.rb

Instance Method Summary collapse

Instance Method Details

#get(ref, year = nil, opts = {}) ⇒ Relaton::Jis::Item?

Get JIS document by reference

Parameters:

  • ref (String)

    JIS document reference

  • year (String, nil) (defaults to: nil)

    JIS document year

  • opts (Hash) (defaults to: {})

    options

Options Hash (opts):

  • :all_parts (Boolean)

    return all parts of document

Returns:



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/relaton/jis/bibliography.rb', line 36

def get(ref, year = nil, opts = {}) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  code = ref.sub(/\s\((all parts|規格群)\)/, "")
  opts[:all_parts] ||= !$1.nil?
  Util.info "Fetching from webdesk.jsa.or.jp ...", key: ref
  hits = search(code, year)
  unless hits
    hint [], ref, year
    return
  end
  result = opts[:all_parts] ? hits.find_all_parts : hits.find
  if result.is_a? Bib::ItemData
    Util.info "Found: `#{result.docidentifier[0].content}`", key: ref
    return result
  end
  hint result, ref, year
end

#hint(result, ref, year) ⇒ Object

Log hint message

Parameters:

  • result (Array)

    search result

  • ref (String)

    reference to search

  • year (String, nil)

    year to search



60
61
62
63
64
65
66
67
# File 'lib/relaton/jis/bibliography.rb', line 60

def hint(result, ref, year)
  Util.info "Not found.", key: ref
  if result.any?
    Util.info "TIP: No match for edition year `#{year}`, but " \
              "matches exist for `#{result.uniq.join('`, `')}`.", key: ref
  end
  nil
end

#search(code, year = nil) ⇒ Relaton::Jis::HitCollection

Search JIS by keyword

Parameters:

  • code (String)

    JIS document code

  • year (String, nil) (defaults to: nil)

    JIS document year

Returns:



16
17
18
19
20
21
22
23
24
# File 'lib/relaton/jis/bibliography.rb', line 16

def search(code, year = nil)
  index = Relaton::Index.find_or_create(
    :jis,
    url: "#{HitCollection::GH_URL}#{INDEXFILE}.zip",
    file: "#{INDEXFILE}.yaml",
  )
  result = index.search(code).sort_by { |h| h[:id] }
  HitCollection.new code, year, result: result
end