Sha256: e43aa5e65b34a802205e536d4af97686b37068a362093028601430dde78a0f57

Contents?: true

Size: 1.31 KB

Versions: 3

Compression:

Stored size: 1.31 KB

Contents

module RelatonUn
  class UnBibliographicItem < RelatonIsoBib::IsoBibliographicItem
    TYPES = %w[
      recommendation plenary addendum communication corrigendum reissue agenda
      budgetary sec-gen-notes expert-report resolution
    ].freeze

    DISTRIBUTIONS = { "GEN" => "general", "LTD" => "limited",
                      "DER" => "restricted", "PRO" => "provisional" }.freeze

    # @return [RelatonUn::Session, NilClass]
    attr_reader :session

    # @return [String, NilClass]
    attr_reader :distribution

    # @param session [RelatonUn::Session, NilClass]
    # @param distribution [String]
    def initialize(**args)
      if args[:distribution] && !DISTRIBUTIONS.has_value?(args[:distribution])
        warn "[relaton-un] WARNING: invalid distribution: #{args[:distribution]}"
      end
      @distribution = args.delete :distribution
      @session = args.delete :session
      super **args
    end

    # @param builder [Nokogiri::XML::Builder]
    # @param bibdata [TrueClasss, FalseClass, NilClass]
    def to_xml(builder = nil, **opts)
      super(builder, **opts) do |b|
        b.distribution distribution if distribution
        session&.to_xml b if session
      end
    end

    # @return [Hash]
    def to_hash
      hash = super
      hash["session"] = session.to_hash if session
      hash
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
relaton-un-1.1.0 lib/relaton_un/un_bibliographic_item.rb
relaton-un-1.0.1 lib/relaton_un/un_bibliographic_item.rb
relaton-un-1.0.0 lib/relaton_un/un_bibliographic_item.rb