Class: Relaton::Render::Citations
- Inherits:
-
Object
- Object
- Relaton::Render::Citations
- Defined in:
- lib/relaton/render/general/citations.rb
Instance Method Summary collapse
- #breakdown(ret) ⇒ Object
- #citations(ret) ⇒ Object
-
#disambig_author_date_citations(ret) ⇒ Object
takes array of { id, type, author, date, ord, data_liquid }.
- #generic_citation(ret) ⇒ Object
-
#initialize(opt = {}) ⇒ Citations
constructor
A new instance of Citations.
-
#render(ret) ⇒ Object
takes array of { id, type, author, date, ord, data_liquid }.
- #render1(cit) ⇒ Object
- #sort_ord(ret) ⇒ Object
- #suffix_date(ret) ⇒ Object
- #to_hash(ret) ⇒ Object
Constructor Details
#initialize(opt = {}) ⇒ Citations
Returns a new instance of Citations.
4 5 6 7 8 |
# File 'lib/relaton/render/general/citations.rb', line 4 def initialize(opt = {}) @type = opt[:type] @i18n = opt[:i18n] @renderer = opt[:renderer] end |
Instance Method Details
#breakdown(ret) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/relaton/render/general/citations.rb', line 47 def breakdown(ret) ret.each_with_object({}) do |b, m| m[b[:author]] ||= {} m[b[:author]][b[:date]] ||= [] m[b[:author]][b[:date]] << b end end |
#citations(ret) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/relaton/render/general/citations.rb', line 27 def citations(ret) case @type when "author-date" then (ret) when nil then generic_citation(ret) else raise "Unimplemented citation type" end end |
#disambig_author_date_citations(ret) ⇒ Object
takes array of { id, type, author, date, ord, data_liquid }
43 44 45 |
# File 'lib/relaton/render/general/citations.rb', line 43 def (ret) to_hash(suffix_date(sort_ord(breakdown(ret)))) end |
#generic_citation(ret) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/relaton/render/general/citations.rb', line 35 def generic_citation(ret) ret.each_with_object({}) do |b, m| m[b[:id]] = { data_liquid: b[:data_liquid], type: b[:type], citation: b[:data_liquid][:docidentifier] } end end |
#render(ret) ⇒ Object
takes array of { id, type, author, date, ord, data_liquid }
11 12 13 14 15 16 17 |
# File 'lib/relaton/render/general/citations.rb', line 11 def render(ret) cites = citations(ret) cites.each_key do |k| cites[k] = render1(cites[k]) end cites end |
#render1(cit) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/relaton/render/general/citations.rb', line 19 def render1(cit) r = @renderer.renderer(cit[:type] || "misc") cit[:formattedref] = @renderer.valid_parse(@i18n.l10n(r.render(cit[:data_liquid]))) i(type data_liquid).each { |x| cit.delete(x) } cit end |
#sort_ord(ret) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/relaton/render/general/citations.rb', line 55 def sort_ord(ret) ret.each do |, v| v.each_key do |date| ret[][date].sort! { |a, b| a[:ord] <=> b[:ord] } end end end |
#suffix_date(ret) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/relaton/render/general/citations.rb', line 63 def suffix_date(ret) ret.each_value do |v| v.each_value do |v1| next if v1.size < 2 v1.each_with_index do |b, i| b[:date] += ("a".ord + i).chr.to_s b[:data_liquid][:date] = b[:date] end end end ret end |
#to_hash(ret) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/relaton/render/general/citations.rb', line 77 def to_hash(ret) ret.each_with_object({}) do |(_k, v), m| v.each do |_k1, v1| v1.each do |b| m[b[:id]] = { author: b[:author], date: b[:date], citation: "#{b[:author]} #{b[:date]}", data_liquid: b[:data_liquid], type: b[:type] } end end end end |