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 directive ].freeze
Instance Attribute Summary collapse
- #doctype ⇒ String, NilClass readonly
- #editorialgroup ⇒ RelatonIsoBib::EditorialGroup readonly
- #horizontal ⇒ Boolean? 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.
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 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 130 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] @horizontal = args[:horizontal] @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)
43 44 45 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 43 def editorialgroup @editorialgroup end |
#horizontal ⇒ Boolean? (readonly)
40 41 42 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 40 def horizontal @horizontal end |
#ics ⇒ Array<RelatonIsoBib::Ics> (readonly)
46 47 48 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 46 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
198 199 200 201 202 203 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 198 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 194 |
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 189 def to_hash hash = super hash["horizontal"] = horizontal unless horizontal.nil? hash["stagename"] = stagename if stagename hash end |
#to_xml(**opts) ⇒ String
Returns XML.
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(**opts) super **opts do |b| if block_given? then yield b elsif opts[:bibdata] && has_ext_attrs? b.ext do b.doctype doctype if doctype b.horizontal horizontal unless horizontal.nil? # 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 |