Sha256: 8eac8b73f86cb08e08934204864672e6cf60b9ce38e36fd240f990ee846b96a6

Contents?: true

Size: 1.6 KB

Versions: 56

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require "relaton_bib/localized_string"

module RelatonBib
  # Formatted string
  class FormattedString < LocalizedString
    FORMATS = %w[text/plain text/html application/docbook+xml
                 application/tei+xml text/x-asciidoc text/markdown
                 application/x-metanorma+xml].freeze

    # @return [String]
    attr_reader :format

    # @param content [String, Array<RelatonBib::LocalizedString>]
    # @param language [String, NilClass] language code Iso639
    # @param script [String, NilClass] script code Iso15924
    # @param format [String] the content type
    def initialize(content:, language: nil, script: nil, format: "text/plain")
      # if format && !FORMATS.include?(format)
      #   raise ArgumentError, %{Format "#{format}" is invalid.}
      # end

      super(content, language, script)
      @format = format
    end

    # @param builder [Nokogiri::XML::Builder]
    def to_xml(builder)
      builder.parent["format"] = format if format
      super
    end

    # @return [Hash]
    def to_hash
      hash = super
      return hash unless format

      hash = { "content" => hash } unless hash.is_a? Hash
      hash["format"] = format
      hash
    end

    # @param prefix [String]
    # @param count [Integer] number of elements
    # @return [String]
    def to_asciibib(prefix = "", count = 1, has_attrs = false)
      has_attrs ||= !(format.nil? || format.empty?)
      pref = prefix.empty? ? prefix : prefix + "."
      # out = count > 1 ? "#{prefix}::\n" : ""
      out = super
      out += "#{pref}format:: #{format}\n" if format
      out
    end
  end
end

Version data entries

56 entries across 56 versions & 1 rubygems

Version Path
relaton-bib-1.13.4 lib/relaton_bib/formatted_string.rb
relaton-bib-1.13.3 lib/relaton_bib/formatted_string.rb
relaton-bib-1.13.2 lib/relaton_bib/formatted_string.rb
relaton-bib-1.13.1 lib/relaton_bib/formatted_string.rb
relaton-bib-1.13.0 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.7 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.6 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.5 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.4 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.3 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.2 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.1 lib/relaton_bib/formatted_string.rb
relaton-bib-1.12.0 lib/relaton_bib/formatted_string.rb
relaton-bib-1.11.7 lib/relaton_bib/formatted_string.rb
relaton-bib-1.11.6 lib/relaton_bib/formatted_string.rb
relaton-bib-1.11.5 lib/relaton_bib/formatted_string.rb
relaton-bib-1.11.4 lib/relaton_bib/formatted_string.rb
relaton-bib-1.11.3 lib/relaton_bib/formatted_string.rb
relaton-bib-1.11.2 lib/relaton_bib/formatted_string.rb
relaton-bib-1.11.1 lib/relaton_bib/formatted_string.rb