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
SUBDOCTYPES =
%w[specification method-of-test vocabulary code-of-practice].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ IsoBibliographicItem

Returns a new instance of IsoBibliographicItem.

Parameters:

  • edition (String)
  • docnumber (String, NilClass)
  • language (Array<String>)
  • script (Arrra<String>)
  • docstatus (RelatonBib::DocumentStatus, NilClass)
  • type (String, NilClass)
  • formattedref (RelatonBib::FormattedRef, NilClass)
  • version (RelatonBib::BibliographicItem::Version, NilClass)
  • biblionote (Array<RelatonBib::BiblioNote>)
  • series (Array<RelatonBib::Series>)
  • medium (RelatonBib::Medium, NilClas)
  • place (Array<String>)
  • extent (Array<Relaton::BibItemLocality>)
  • accesslocation (Array<String>)
  • classification (RelatonBib::Classification, NilClass)
  • validity (RelatonBib:Validity, NilClass)
  • docid (Array<RelatonBib::DocumentIdentifier>)
  • doctype (String, nil)
  • subdoctype (String, nil)
  • horizontal (Boolean, nil)
  • structuredidentifier (RelatonIsoBib::StructuredIdentifier)
  • stagename (String, NilClass)
  • title (Array<Hash>)
  • editorialgroup (Hash, RelatonIsoBib::EditorialGroup)
  • ics (Array<Hash>)
  • date (Array<Hash>)
  • abstract (Array<Hash>)
  • contributor (Array<Hash>)
  • copyright (Hash)
  • link (Array<Hash, RelatonBib::TypedUri>)
  • relation (Array<Hash>)
  • workgrpup (Hash)

    a customizable set of options

  • technical_committee (Hash)

    a customizable set of options

  • entity (Hash)

    a customizable set of options

  • owner (Hash)

    a customizable set of options

Raises:

  • (ArgumentError)


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
160
161
162
163
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 133

def initialize(**args)
  check_doctype args[:doctype]

  arg_names = %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
    editorialgroup doctype keyword
  ]
  super_args = args.select { |k| arg_names.include? k }
  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

  if args[:subdoctype] && !SUBDOCTYPES.include?(args[:subdoctype])
    warn "Invald subdoctype '#{args[:subdoctype]}'. Allowed values are: #{SUBDOCTYPES.join(', ')}"
  end
  @subdoctype = args[:subdoctype]
  @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)

Returns:

  • (String, NilClass)


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

def doctype
  @doctype
end

#editorialgroupRelatonIsoBib::EditorialGroup (readonly)



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

def editorialgroup
  @editorialgroup
end

#horizontalBoolean? (readonly)

Returns:

  • (Boolean, nil)


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

def horizontal
  @horizontal
end

#icsArray<RelatonIsoBib::Ics> (readonly)



48
49
50
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 48

def ics
  @ics
end

#stagenameString, NilClass (readonly)

Returns:

  • (String, NilClass)


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

def stagename
  @stagename
end

#structuredidentifierRelatonIsoBib::StructuredIdentifier (readonly)



33
34
35
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 33

def structuredidentifier
  @structuredidentifier
end

#titleArray<RelatonBib::TypedTitleString> (readonly)

Returns:

  • (Array<RelatonBib::TypedTitleString>)


# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 35

Instance Method Details

#to_asciibib(prefix = "") ⇒ String

Parameters:

  • prefix (String) (defaults to: "")

Returns:

  • (String)


200
201
202
203
204
205
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 200

def to_asciibib(prefix = "")
  pref = prefix.empty? ? prefix : "#{prefix}."
  out = super
  out += "#{pref}stagename:: #{stagename}\n" if stagename
  out
end

#to_hashHash

Returns:

  • (Hash)


191
192
193
194
195
196
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 191

def to_hash
  hash = super
  hash["horizontal"] = horizontal unless horizontal.nil?
  hash["stagename"] = stagename if stagename
  hash
end

#to_xml(**opts) ⇒ String

Returns XML.

Parameters:

  • opts (Hash)

Options Hash (**opts):

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

    XML builder

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

    language

Returns:

  • (String)

    XML



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/relaton_iso_bib/iso_bibliographic_item.rb', line 170

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.subdoctype subdoctype if subdoctype
        b.horizontal horizontal unless horizontal.nil?
        editorialgroup&.to_xml b
        ics.each { |i| i.to_xml b }
        structuredidentifier&.to_xml b
        b.stagename stagename if stagename
      end
    end
  end
end