Class: RelatonIsoBib::IsoBibliographicItem
- Inherits:
-
RelatonBib::BibliographicItem
- Object
- RelatonBib::BibliographicItem
- RelatonIsoBib::IsoBibliographicItem
- Defined in:
- lib/relaton_iso_bib/iso_bibliographic_item.rb
Overview
Bibliographic item.
Constant Summary collapse
- TYPES =
%w[ international-standard technical-specification technical-report publicly-available-specification international-workshop-agreement guide amendment technical-corrigendum ].freeze
Instance Attribute Summary collapse
- #doctype ⇒ String, NilClass readonly
- #editorialgroup ⇒ RelatonIsoBib::EditorialGroup readonly
- #ics ⇒ Array<RelatonIsoBib::Ics> readonly
- #stagename ⇒ String, NilClass readonly
- #structuredidentifier ⇒ RelatonIsoBib::StructuredIdentifier readonly
- #title ⇒ Array<RelatonBib::TypedTitleString> readonly
Instance Method Summary collapse
-
#initialize(**args) ⇒ IsoBibliographicItem
constructor
A new instance of IsoBibliographicItem.
- #to_asciibib(prefix = "") ⇒ String
- #to_hash ⇒ Hash
- #to_xml(builder = nil, **opts) ⇒ String
Constructor Details
#initialize(**args) ⇒ IsoBibliographicItem
Returns a new instance of IsoBibliographicItem.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 125 def initialize(**args) check_doctype args[:doctype] super_args = args.select do |k| %i[id docnumber language script docstatus date abstract contributor edition version relation biblionote series medium place copyright link fetched docid formattedref extent accesslocation classification validity doctype keyword].include? k end super super_args @type = args[:type] || "standard" @title = args.fetch(:title, []).map do |t| if t.is_a? Hash # a + typed_titles(t) RelatonBib::TypedTitleString.new t else t end end if args[:editorialgroup] @editorialgroup = if args[:editorialgroup].is_a?(Hash) EditorialGroup.new(args[:editorialgroup]) else args[:editorialgroup] end end @structuredidentifier = args[:structuredidentifier] # @doctype = args[:doctype] || "international-standard" @ics = args.fetch(:ics, []).map { |i| i.is_a?(Hash) ? Ics.new(i) : i } @stagename = args[:stagename] @id_attribute = true end |
Instance Attribute Details
#doctype ⇒ String, NilClass (readonly)
37 38 39 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 37 def doctype @doctype end |
#editorialgroup ⇒ RelatonIsoBib::EditorialGroup (readonly)
40 41 42 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 40 def editorialgroup @editorialgroup end |
#ics ⇒ Array<RelatonIsoBib::Ics> (readonly)
43 44 45 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 43 def ics @ics end |
#stagename ⇒ String, NilClass (readonly)
37 38 39 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 37 def stagename @stagename end |
#structuredidentifier ⇒ RelatonIsoBib::StructuredIdentifier (readonly)
31 32 33 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 31 def structuredidentifier @structuredidentifier end |
#title ⇒ Array<RelatonBib::TypedTitleString> (readonly)
|
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 33
|
Instance Method Details
#to_asciibib(prefix = "") ⇒ String
197 198 199 200 201 202 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 197 def to_asciibib(prefix = "") pref = prefix.empty? ? prefix : prefix + "." out = super out += "#{pref}stagename:: #{stagename}\n" if stagename out end |
#to_hash ⇒ Hash
189 190 191 192 193 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 189 def to_hash hash = super hash["stagename"] = stagename if stagename hash end |
#to_xml(builder = nil, **opts) ⇒ String
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 162 def to_xml(builder = nil, **opts) super builder, **opts do |b| if opts[:bibdata] && (doctype || respond_to?(:committee) && committee || editorialgroup || ics.any? || structuredidentifier || stagename || block_given?) b.ext do b.doctype doctype if doctype b.docsubtype docsubtype if respond_to?(:docsubtype) && docsubtype # GB renders gbcommittee elements istead of an editorialgroup if respond_to? :committee committee&.to_xml b else editorialgroup&.to_xml b end ics.each { |i| i.to_xml b } structuredidentifier&.to_xml b b.stagename stagename if stagename yield b if block_given? end end end end |