Sha256: 89ebc6522d8b02a316b0714c096a966dee27addca6de96992c0f9d25130e74ef

Contents?: true

Size: 1.63 KB

Versions: 13

Compression:

Stored size: 1.63 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

13 entries across 13 versions & 1 rubygems

Version Path
relaton-bipm-1.16.0 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.11 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.10 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.9 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.8 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.7 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.6 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.5 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.4 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.3 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.2 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.1 lib/relaton_bipm/committee.rb
relaton-bipm-1.14.0 lib/relaton_bipm/committee.rb