Class: RelatonBib::Organization

Inherits:
Contributor show all
Defined in:
lib/relaton_bib/organization.rb

Overview

Organization.

Constant Summary

Constants included from RelatonBib

VERSION

Instance Attribute Summary collapse

Attributes inherited from Contributor

#contact, #uri

Instance Method Summary collapse

Methods inherited from Contributor

#url

Methods included from RelatonBib

parse_date

Constructor Details

#initialize(**args) ⇒ Organization

Returns a new instance of Organization.

Parameters:

Raises:

  • (ArgumentError)


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/relaton_bib/organization.rb', line 70

def initialize(**args) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
  raise ArgumentError, "missing keyword: name" unless args[:name]

  super(url: args[:url], contact: args.fetch(:contact, []))

  @name = if args[:name].is_a?(Array)
            args[:name].map { |n| localized_string(n) }
          else
            [localized_string(args[:name])]
          end

  @abbreviation = localized_string args[:abbreviation]
  @subdivision  = (args[:subdivision] || []).map do |sd|
    localized_string sd
  end
  @identifier = args.fetch(:identifier, [])
end

Instance Attribute Details

#abbreviationRelatonBib::LocalizedString, NilClass (readonly)

Returns:



56
57
58
# File 'lib/relaton_bib/organization.rb', line 56

def abbreviation
  @abbreviation
end

#identifierArray<RelatonBib::OrgIdentifier> (readonly)



62
63
64
# File 'lib/relaton_bib/organization.rb', line 62

def identifier
  @identifier
end

#nameArray<RelatonBib::LocalizedString> (readonly)



53
54
55
# File 'lib/relaton_bib/organization.rb', line 53

def name
  @name
end

#subdivisionArray<RelatonBib::LocalizedString> (readonly)



59
60
61
# File 'lib/relaton_bib/organization.rb', line 59

def subdivision
  @subdivision
end

Instance Method Details

#to_asciibib(prefix = "", count = 1) ⇒ String

Parameters:

  • prefix (String) (defaults to: "")
  • count (Integer) (defaults to: 1)

Returns:

  • (String)


120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/relaton_bib/organization.rb', line 120

def to_asciibib(prefix = "", count = 1) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength
  pref = prefix.sub /\*$/, "organization"
  out = count > 1 ? "#{pref}::\n" : ""
  name.each { |n| out += n.to_asciibib "#{pref}.name", name.size }
  out += abbreviation.to_asciibib "#{pref}.abbreviation" if abbreviation
  subdivision.each do |sd|
    out += "#{pref}.subdivision::" if subdivision.size > 1
    out += sd.to_asciibib "#{pref}.subdivision"
  end
  identifier.each { |n| out += n.to_asciibib pref, identifier.size }
  out += super pref
  out
end

#to_hashHash

Returns:

  • (Hash)


107
108
109
110
111
112
113
114
115
# File 'lib/relaton_bib/organization.rb', line 107

def to_hash # rubocop:disable Metrics/AbcSize
  hash = { "name" => single_element_array(name) }
  hash["abbreviation"] = abbreviation.to_hash if abbreviation
  hash["identifier"] = single_element_array(identifier) if identifier&.any?
  if subdivision&.any?
    hash["subdivision"] = single_element_array(subdivision)
  end
  { "organization" => hash.merge(super) }
end

#to_xml(**opts) ⇒ Object

Parameters:

  • opts (Hash)

Options Hash (**opts):

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

    XML builder

  • :lang (String)

    language



91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/relaton_bib/organization.rb', line 91

def to_xml(**opts) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/MethodLength
  opts[:builder].organization do |builder|
    nm = name.select { |n| n.language&.include? opts[:lang] }
    nm = name unless nm.any?
    nm.each { |n| builder.name { |b| n.to_xml b } }
    sbdv = subdivision.select { |sd| sd.language&.include? opts[:lang] }
    sbdv = subdivision unless sbdv.any?
    sbdv.each { |sd| builder.subdivision { sd.to_xml builder } }
    builder.abbreviation { |a| abbreviation.to_xml a } if abbreviation
    builder.uri url if uri
    identifier.each { |identifier| identifier.to_xml builder }
    super builder
  end
end