Sha256: 60633553b02e3482ad3b4081b80e8b2a2d218c6abc54f1f4e2a187bf42a321ab

Contents?: true

Size: 1.45 KB

Versions: 6

Compression:

Stored size: 1.45 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)
      unless BUREAUS.include? bureau
        warn "[relaton-itu] WARNING: invalid bureau: #{bureau}"
      end
      @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 } if group
        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 }
      hash["group"] = group.to_hash if group
      hash["subgroup"] = subgroup.to_hash if subgroup
      hash["workgroup"] = workgroup.to_hash if workgroup
      hash
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/relaton-itu-1.2.0/lib/relaton_itu/editorial_group.rb
metanorma-cli-1.3.3.1 gems/ruby/2.6.0/gems/relaton-itu-1.2.0/lib/relaton_itu/editorial_group.rb
relaton-itu-1.2.0 lib/relaton_itu/editorial_group.rb
relaton-itu-1.1.0 lib/relaton_itu/editorial_group.rb
relaton-itu-1.0.4 lib/relaton_itu/editorial_group.rb
relaton-itu-1.0.2 lib/relaton_itu/editorial_group.rb