Sha256: 2895bf03c7b584c4f89f2f632ece468ba8c137a1db387de9a8e6f56bc55010b7

Contents?: true

Size: 1.62 KB

Versions: 33

Compression:

Stored size: 1.62 KB

Contents

module RelatonBipm
  class Committee
    # @return [String]
    attr_reader :acronym

    # @return [RelatonBib::LocalizedString]
    attr_reader :content

    # @param acronym [String]
    # @param content [RelatonBib::LocalisedString, String, nil]
    def initialize(acronym:, content: nil)
      acronyms = YAML.load_file File.join(__dir__, "acronyms.yaml")
      unless acronyms[acronym]
        warn "[relaton-bipm] WARNING: invalid acronym: #{acronym}. Allowed "\
        "values: #{acronyms.map { |k, _v| k }.join ', '}"
      end

      @acronym = acronym
      @content = localized_content content, acronyms[acronym]
    end

    # @param builder [Nokogiri::XML::Builder]
    def to_xml(builder)
      builder.committee(acronym: acronym) { |b| content.to_xml b }
    end

    # @param prefix [String]
    # @param count [Integer]
    # @return [String]
    def to_asciibib(prefix, count = 1)
      pref = prefix.empty? ? prefix : "#{prefix}."
      pref += "committee"
      out = count > 1 ? "#{pref}::\n" : ""
      out += "#{pref}.acronym:: #{acronym}\n"
      out + content.to_asciibib(pref)
    end

    # @return [Hash]
    def to_hash
      hash = { "acronym" => acronym }
      cnt = content.to_hash
      case cnt
      when Array then hash["variants"] = cnt
      when Hash then hash.merge! cnt
      else hash["content"] = cnt
      end
      hash
    end

    private

    def localized_content(cnt, acr)
      if cnt.is_a? String
        RelatonBib::LocalizedString.new cnt
      elsif (cnt.nil? || cnt.empty?) && acr && acr["en"]
        RelatonBib::LocalizedString.new(acr["en"], "en", "Latn")
      else cnt
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
relaton-bipm-1.13.12 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.11 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.10 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.9 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.8 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.7 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.6 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.5 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.4 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.3 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.2 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.1 lib/relaton_bipm/committee.rb
relaton-bipm-1.13.0 lib/relaton_bipm/committee.rb
relaton-bipm-1.12.3 lib/relaton_bipm/committee.rb
relaton-bipm-1.12.2 lib/relaton_bipm/committee.rb
relaton-bipm-1.12.1 lib/relaton_bipm/committee.rb
relaton-bipm-1.12.0 lib/relaton_bipm/committee.rb
relaton-bipm-1.11.9 lib/relaton_bipm/committee.rb
relaton-bipm-1.11.8 lib/relaton_bipm/committee.rb
relaton-bipm-1.11.7 lib/relaton_bipm/committee.rb