Module: Relaton::Jis::Bibliography
Instance Method Summary collapse
-
#get(ref, year = nil, opts = {}) ⇒ Relaton::Jis::Item?
Get JIS document by reference.
-
#hint(result, ref, year) ⇒ Object
Log hint message.
-
#search(code, year = nil) ⇒ Relaton::Jis::HitCollection
Search JIS by keyword.
Instance Method Details
#get(ref, year = nil, opts = {}) ⇒ Relaton::Jis::Item?
Get JIS document by reference
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
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
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 |