6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/bolognese/writers/bibtex_writer.rb', line 6
def bibtex
return nil unless valid?
pages = container.to_h["firstPage"].present? ? [container["firstPage"], container["lastPage"]].compact.join("-") : nil
bib = {
bibtex_type: types["bibtex"].presence || "misc",
bibtex_key: normalize_doi(doi),
doi: doi,
url: url,
author: authors_as_string(creators),
keywords: subjects.present? ? Array.wrap(subjects).map { |k| parse_attributes(k, content: "subject", first: true) }.join(", ") : nil,
language: language,
title: parse_attributes(titles, content: "title", first: true),
journal: container && container["title"],
volume: container.to_h["volume"],
issue: container.to_h["issue"],
pages: pages,
publisher: publisher,
year: publication_year,
copyright: Array.wrap(rights_list).map { |l| l["rights"] }.first,
}.compact
BibTeX::Entry.new(bib).to_s
end
|