Class: RelatonIsoBib::IsoBibliographicItem

Inherits:
RelatonBib::BibliographicItem
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ IsoBibliographicItem

Returns a new instance of IsoBibliographicItem.

Raises:

  • (ArgumentError)


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

#doctypeString, NilClass (readonly)



37
38
39
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 37

def doctype
  @doctype
end

#editorialgroupRelatonIsoBib::EditorialGroup (readonly)



43
44
45
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 43

def editorialgroup
  @editorialgroup
end

#horizontalBoolean? (readonly)



40
41
42
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 40

def horizontal
  @horizontal
end

#icsArray<RelatonIsoBib::Ics> (readonly)



46
47
48
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 46

def ics
  @ics
end

#stagenameString, NilClass (readonly)



37
38
39
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 37

def stagename
  @stagename
end

#structuredidentifierRelatonIsoBib::StructuredIdentifier (readonly)



31
32
33
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 31

def structuredidentifier
  @structuredidentifier
end

#titleArray<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_hashHash



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.

Options Hash (**opts):

  • :builder (Nokogiri::XML::Builder)

    XML builder

  • :bibdata (Boolean)
  • :lang (String)

    language



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