Sha256: a75a01eab11e76bb92d232b6597850bd2f7e50993fa5662829803068ba2247ca

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module ModsDisplay
  class Location < Field
    def fields
      return_fields = []
      @values.each do |location|
        location.children.each do |child|
          next unless location_field_keys.include?(child.name.to_sym)

          if child.name.to_sym == :url
            loc_label = displayLabel(location) || I18n.t('mods_display.location')
            value = "<a href='#{child.text}'>#{(displayLabel(child) || child.text).gsub(/:$/, '')}</a>"
          else
            loc_label = location_label(child) || displayLabel(location) || I18n.t('mods_display.location')
            value = child.text
          end
          return_fields << ModsDisplay::Values.new(
            label: loc_label || displayLabel(location) || I18n.t('mods_display.location'),
            values: [value]
          )
        end
      end
      collapse_fields(return_fields)
    end

    private

    def location_field_keys
      %i[physicalLocation url shelfLocator holdingSimple holdingExternal]
    end

    def location_label(element)
      if displayLabel(element)
        displayLabel(element)
      elsif element.attributes['type'].respond_to?(:value) && location_labels.key?(element.attributes['type'].value)
        location_labels[element.attributes['type'].value]
      end
    end

    def location_labels
      { 'repository' => I18n.t('mods_display.repository') }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mods_display-1.0.0 lib/mods_display/fields/location.rb
mods_display-1.0.0.alpha5 lib/mods_display/fields/location.rb