Sha256: 9a5e5c1a7e99315d3d2d92469d27dfee0b69e15cedd856c91f3d63bb96406e52

Contents?: true

Size: 1.32 KB

Versions: 44

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

module Cocina
  module Models
    module Mapping
      module ToMods
        # Maps roles from cocina to MODS XML
        class RoleWriter
          # @params [Nokogiri::XML::Builder] xml
          # @params [Cocina::Models::DescriptiveValue] role
          def self.write(xml:, role:)
            new(xml: xml, role: role).write
          end

          def initialize(xml:, role:)
            @xml = xml
            @role = role
          end

          def write
            xml.role do
              attributes = {
                valueURI: role.uri,
                authority: role.source&.code,
                authorityURI: role.source&.uri
              }.compact
              if role.value.present?
                attributes[:type] = 'text'
                value = if role.source&.value == 'Stanford self-deposit contributor types'
                          role.value.downcase
                        else
                          role.value
                        end
                xml.roleTerm value, attributes
              end
              if role.code.present?
                attributes[:type] = 'code'
                xml.roleTerm role.code, attributes
              end
            end
          end

          private

          attr_reader :xml, :role
        end
      end
    end
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
cocina-models-0.100.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.99.4 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.99.3 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.99.2 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.99.1 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.99.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.98.1 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.98.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.96.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.95.1 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.95.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.94.2 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.94.1 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.94.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.93.1 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.93.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.92.0 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.91.4 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.91.3 lib/cocina/models/mapping/to_mods/role_writer.rb
cocina-models-0.91.2 lib/cocina/models/mapping/to_mods/role_writer.rb