Class: BibTeX::Entry::CiteProcConverter
- Inherits:
-
Object
- Object
- BibTeX::Entry::CiteProcConverter
- Defined in:
- lib/bibtex/entry/citeproc_converter.rb
Constant Summary collapse
- CSL_FILTER =
Hash.new { |h, k| k }.merge(Hash[*%w{ date issued isbn ISBN booktitle container-title journal container-title journaltitle container-title series collection-title address publisher-place pages page number issue url URL doi DOI year issued type genre school publisher institution publisher organization publisher howpublished publisher type genre }.map(&:intern)]).freeze
- CSL_FIELDS =
%w{ abstract annote archive archive_location archive-place authority call-number chapter-number citation-label citation-number collection-title container-title DOI edition event event-place first-reference-note-number genre ISBN issue jurisdiction keyword locator medium note number number-of-pages number-of-volumes original-publisher original-publisher-place original-title page page-first publisher publisher-place references section status title URL version volume year-suffix accessed container event-date issued original-date author editor translator recipient interviewer publisher composer original-publisher original-author container-author collection-editor }.map(&:intern).freeze
- CSL_TYPES =
Hash.new { |h, k| k }.merge(Hash[*%w{ booklet pamphlet conference paper-conference inbook chapter incollection chapter inproceedings paper-conference manual book mastersthesis thesis phdthesis thesis proceedings book techreport report unpublished manuscript article article-journal }.map(&:intern)]).freeze
Class Method Summary collapse
Instance Method Summary collapse
- #conferences ⇒ Object
- #convert! ⇒ Object
- #date ⇒ Object
-
#initialize(bibtex, options = {}) ⇒ CiteProcConverter
constructor
A new instance of CiteProcConverter.
- #key ⇒ Object
- #techreport ⇒ Object
- #type ⇒ Object
Constructor Details
#initialize(bibtex, options = {}) ⇒ CiteProcConverter
Returns a new instance of CiteProcConverter.
55 56 57 58 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 55 def initialize(bibtex, = {}) @bibtex = bibtex @options = { quotes: [] }.merge() end |
Class Method Details
.convert(bibtex, options = {}) ⇒ Object
51 52 53 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 51 def self.convert(bibtex, = {}) new(bibtex, ).convert! end |
Instance Method Details
#conferences ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 78 def conferences return unless [:conference, :proceedings, :inproceedings].include?(bibtex.type) if bibtex.field?(:organization) && bibtex.field?(:publisher) hash['authority'] = bibtex[:organization] hash['publisher'] = bibtex[:publisher] end if bibtex.field? :address hash['event-place'] = bibtex[:address] end end |
#convert! ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 60 def convert! bibtex.parse_names bibtex.parse_month bibtex.each_pair do |key, value| convert key, value end bibtex.inherited_fields.each do |key| convert key, bibtex.parent.provide(key) end methods = self.class.instance_methods(false) - [:convert!, :hash] methods.each { |m| send(m) } hash end |
#date ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 96 def date case when bibtex.field?(:date) hash['issued'] = { 'date-parts' => bibtex.date.to_s.split('/').map { |part| part.split('-').map(&:to_i) } } when bibtex.field?(:year) case bibtex[:year].to_s when /^\d+$/ parts = [bibtex[:year].to_s] if bibtex.field?(:month) parts.push BibTeX::Entry::MONTHS.find_index(bibtex[:month].to_s.intern) parts[1] = parts[1] + 1 unless parts[1].nil? if bibtex.field?(:day) parts.push bibtex[:day] end end hash['issued'] = { 'date-parts' => [parts.compact.map(&:to_i)] } else hash['issued'] = { 'literal' => bibtex[:year].to_s } end else # no date present end end |
#key ⇒ Object
129 130 131 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 129 def key hash['id'] = bibtex.key.to_s end |
#techreport ⇒ Object
91 92 93 94 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 91 def techreport return unless [:techreport, :report].include?(bibtex.type) hash['number'] = bibtex[:number].to_s if bibtex.field? :number end |
#type ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/bibtex/entry/citeproc_converter.rb', line 133 def type hash['type'] = CSL_TYPES[bibtex.type].to_s return if hash.key?('genre') case bibtex.type when :mastersthesis hash['genre'] = "Master's thesis" when :phdthesis hash['genre'] = 'PhD thesis' end end |