Sha256: 6b911218ba05e847d067b34a3da9a3f7d856c1c242d21e8db106277afe7086d5

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

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
      [: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

6 entries across 6 versions & 1 rubygems

Version Path
mods_display-1.0.0.alpha4 lib/mods_display/fields/location.rb
mods_display-1.0.0.alpha3 lib/mods_display/fields/location.rb
mods_display-1.0.0.alpha2 lib/mods_display/fields/location.rb
mods_display-1.0.0.alpha1 lib/mods_display/fields/location.rb
mods_display-0.10.1 lib/mods_display/fields/location.rb
mods_display-0.10.0 lib/mods_display/fields/location.rb