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(**opts) ⇒ String
XML.
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 |
# 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 title 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" 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
192 193 194 195 196 197 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 192 def to_asciibib(prefix = "") pref = prefix.empty? ? prefix : prefix + "." out = super out += "#{pref}stagename:: #{stagename}\n" if stagename out end |
#to_hash ⇒ Hash
184 185 186 187 188 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 184 def to_hash hash = super hash["stagename"] = stagename if stagename hash end |
#to_xml(**opts) ⇒ String
Returns XML.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 157 def to_xml(**opts) super **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 |