Sha256: 8233dbe9c99f5997670b89e49237a239693314e6b50efc7b322146900db0cec5

Contents?: true

Size: 1.4 KB

Versions: 21

Compression:

Stored size: 1.4 KB

Contents

module RelatonItu
  class EditorialGroup
    BUREAUS = %w[T D R].freeze

    # @return [String]
    attr_reader :bureau

    # @returnn [RelatonItu::ItuGroup]
    attr_reader :group

    # @return [RelatonItu::ItuGroup, NilClass]
    attr_reader :subgroup, :workgroup

    # @param bureau [String]
    # @param group [Hash, RelatonItu::ItuGroup]
    # @param subgroup [Hash, RelatonItu::ItuGroup, NilClass]
    # @param workgroup [Hash, RelatonItu::ItuGroup, NilClass]
    def initialize(bureau:, group:, subgroup: nil, workgroup: nil)
      raise ArgumentError, "invalid bureau: #{bureau}" unless BUREAUS.include? bureau

      @bureau = bureau
      @group = group.is_a?(Hash) ? ItuGroup.new(group) : group
      @subgroup = subgroup.is_a?(Hash) ? ItuGroup.new(subgroup) : subgroup
      @workgroup = workgroup.is_a?(Hash) ? ItuGroup.new(workgroup) : workgroup
    end

    # @param builder [Nokogiri::XML::Builder]
    def to_xml(builder)
      builder.editorialgroup do
        builder.bureau bureau
        builder.group { |b| group.to_xml b }
        builder.subgroup { |b| group.to_xml b } if subgroup
        builder.workgroup { |b| group.to_xml b } if workgroup
      end
    end

    # @return [Hash]
    def to_hash
      hash = { "bureau" => bureau, "group" => group.to_hash }
      hash["subgroup"] = subgroup.to_hash if subgroup
      hash["workgroup"] = workgroup.to_hash if workgroup
      hash
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
relaton-itu-1.0.1 lib/relaton_itu/editorial_group.rb
relaton-itu-1.0.0 lib/relaton_itu/editorial_group.rb
relaton-itu-0.9.0 lib/relaton_itu/editorial_group.rb
relaton-itu-0.8.1 lib/relaton_itu/editorial_group.rb
relaton-itu-0.8.0 lib/relaton_itu/editorial_group.rb
relaton-itu-0.7.0 lib/relaton_itu/editorial_group.rb
relaton-itu-0.6.0 lib/relaton_itu/editorial_group.rb
relaton-itu-0.5.1 lib/relaton_itu/editorial_group.rb
relaton-itu-0.5.0 lib/relaton_itu/editorial_group.rb
relaton-itu-0.4.1 lib/relaton_itu/editorial_group.rb
relaton-itu-0.4.0 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.11 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.10 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.9 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.8 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.7 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.6 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.5 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.4 lib/relaton_itu/editorial_group.rb
relaton-itu-0.3.3 lib/relaton_itu/editorial_group.rb