class RelatonIsoBib::EditorialGroup

ISO project group.

Attributes

secretariat[R]

@return [String, NilClass]

subcommittee[R]

@return [Array<RelatonIsoBib::IsoSubgroup>]

technical_committee[R]

@return [Array<RelatonIsoBib::IsoSubgroup>]

workgroup[R]

@return [Array<RelatonIsoBib::IsoSubgroup>]

Public Class Methods

new(technical_committee:, **args) click to toggle source

@param technical_committee [Array<Hash, RelatonIsoBib::IsoSubgroup>] @option technical_committee [String] :name @option technical_committee [String] :type @option technical_committee [Integer] :number

@param subcommittee [Array<Hash, RelatonIsoBib::IsoSubgroup>] @option subcommittee [String] :name @option subcommittee [String] :type @option subcommittee [Integer] :number

@param workgroup [Array<Hash, RelatonIsoBib::IsoSubgroup>] @option workgroup [String] :name @option workgroup [String] :type @option workgroup [Integer] :number

@param secretariat [String, NilClass]

# File lib/relaton_iso_bib/editorial_group.rb, line 36
def initialize(technical_committee:, **args) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/AbcSize
  @technical_committee = technical_committee.map do |tc|
    tc.is_a?(Hash) ? RelatonBib::WorkGroup.new(**tc) : tc
  end
  @subcommittee = args.fetch(:subcommittee, []).map do |sc|
    sc.is_a?(Hash) ? RelatonBib::WorkGroup.new(**sc) : sc
  end
  @workgroup = args.fetch(:workgroup, []).map do |wg|
    wg.is_a?(Hash) ? RelatonBib::WorkGroup.new(**wg) : wg
  end
  @secretariat = args[:secretariat]
end

Public Instance Methods

presence?() click to toggle source

@return [true]

# File lib/relaton_iso_bib/editorial_group.rb, line 50
def presence?
  true
end
to_asciibib(prefix = "") click to toggle source

@param prefix [String] @return [String]

# File lib/relaton_iso_bib/editorial_group.rb, line 88
def to_asciibib(prefix = "") # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  pref = prefix.empty? ? prefix : "#{prefix}."
  pref += "editorialgroup"
  out = ""
  technical_committee.each do |tc|
    out += tc.to_asciibib "#{pref}.technical_committee",
                          technical_committee.size
  end
  subcommittee.each do |sc|
    out += sc.to_asciibib "#{pref}.subcommittee", subcommittee.size
  end
  workgroup.each do |wg|
    out += wg.to_asciibib "#{pref}.workgroup", workgroup.size
  end
  out += "#{pref}.secretariat:: #{secretariat}\n" if secretariat
  out
end
to_hash() click to toggle source

@return [Hash]

# File lib/relaton_iso_bib/editorial_group.rb, line 74
def to_hash # rubocop:disable Metrics/AbcSize
  hash = {
    "technical_committee" => single_element_array(technical_committee),
  }
  if subcommittee&.any?
    hash["subcommittee"] = single_element_array(subcommittee)
  end
  hash["workgroup"] = single_element_array(workgroup) if workgroup&.any?
  hash["secretariat"] = secretariat if secretariat
  hash
end
to_xml(builder) click to toggle source

@param builder [Nokogiri::XML::Builder]

# File lib/relaton_iso_bib/editorial_group.rb, line 55
def to_xml(builder) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/AbcSize, Metrics/MethodLength
  return unless technical_committee || subcommittee || workgroup ||
    secretariat

  builder.editorialgroup do
    technical_committee.each do |tc|
      builder.send("technical-committee") { tc.to_xml builder }
    end
    subcommittee.each do |sc|
      builder.subcommittee { sc.to_xml builder }
    end
    workgroup.each do |wg|
      builder.workgroup { wg.to_xml builder }
    end
    builder.secretariat secretariat if secretariat
  end
end