Sha256: 323bf6c3f726f54ddee49dfd4ec47f6481b1407bb0b30649cfe445ab53cc71c2

Contents?: true

Size: 1.39 KB

Versions: 6

Compression:

Stored size: 1.39 KB

Contents

module RelatonCcsds
  class BibliographicItem < RelatonBib::BibliographicItem
    attr_reader :technology_area

    # @param technology_area [String, nil]
    def initialize(**args)
      @technology_area = args.delete(:technology_area)
      super
    end

    #
    # Fetch flavor schema version
    #
    # @return [String] schema version
    #
    def ext_schema
      @ext_schema ||= schema_versions["relaton-model-ccsds"]
    end

    # @param builder [Nokogiri::XML::Builder]
    def to_xml(**opts) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
      super do |builder|
        if opts[:bibdata] && (doctype || editorialgroup || technology_area)
          ext = builder.ext do |b|
            doctype&.to_xml b
            editorialgroup&.to_xml b
            b.send(:"technology-area", technology_area) if technology_area
          end
          ext["schema-version"] = ext_schema if !opts[:embedded] && respond_to?(:ext_schema) && ext_schema
        end
      end
    end

    # @return [Hash]
    def to_hash(embedded: false)
      hash = super
      if technology_area
        hash["ext"] ||= {}
        hash["ext"]["technology_area"] = technology_area
      end
      hash
    end

    def to_format(format)
      return self unless format

      me = deep_clone
      me.link.select! { |l| l.type.casecmp(format).zero? }
      me if me.link.any?
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
relaton-ccsds-1.20.1 lib/relaton_ccsds/bibliographic_item.rb
relaton-ccsds-1.20.0 lib/relaton_ccsds/bibliographic_item.rb
relaton-ccsds-1.19.0 lib/relaton_ccsds/bibliographic_item.rb
relaton-ccsds-1.18.1 lib/relaton_ccsds/bibliographic_item.rb
relaton-ccsds-1.18.0 lib/relaton_ccsds/bibliographic_item.rb
relaton-ccsds-1.17.0 lib/relaton_ccsds/bibliographic_item.rb