Class: RelatonBib::Organization
- Inherits:
-
Contributor
- Object
- Contributor
- RelatonBib::Organization
- Defined in:
- lib/relaton_bib/organization.rb
Overview
Organization.
Constant Summary
Constants included from RelatonBib
Instance Attribute Summary collapse
- #abbreviation ⇒ RelatonBib::LocalizedString, NilClass readonly
- #identifier ⇒ Array<RelatonBib::OrgIdentifier> readonly
- #name ⇒ Array<RelatonBib::LocalizedString> readonly
- #subdivision ⇒ Array<RelatonBib::LocalizedString> readonly
Attributes inherited from Contributor
Instance Method Summary collapse
-
#initialize(**args) ⇒ Organization
constructor
A new instance of Organization.
- #to_asciibib(prefix = "", count = 1) ⇒ String
- #to_hash ⇒ Hash
- #to_xml(**opts) ⇒ Object
Methods inherited from Contributor
Methods included from RelatonBib
Constructor Details
#initialize(**args) ⇒ Organization
Returns a new instance of Organization.
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
#abbreviation ⇒ RelatonBib::LocalizedString, NilClass (readonly)
56 57 58 |
# File 'lib/relaton_bib/organization.rb', line 56 def abbreviation @abbreviation end |
#identifier ⇒ Array<RelatonBib::OrgIdentifier> (readonly)
62 63 64 |
# File 'lib/relaton_bib/organization.rb', line 62 def identifier @identifier end |
#name ⇒ Array<RelatonBib::LocalizedString> (readonly)
53 54 55 |
# File 'lib/relaton_bib/organization.rb', line 53 def name @name end |
#subdivision ⇒ Array<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
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_hash ⇒ 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
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 |