Sha256: 94da66920554614dd8432c7262b262930d57e462a25000849bbba40bb749b863

Contents?: true

Size: 832 Bytes

Versions: 13

Compression:

Stored size: 832 Bytes

Contents

# frozen_string_literal: true

module ModsDisplay
  class Geo < Field
    def fields
      return [] unless geo_extensions.present?

      extensions = geo_extensions.map(&method(:process_geo_extension))
      [
        ModsDisplay::Values.new(
          label: I18n.t('mods_display.geo_extension'),
          values: extensions
        )
      ]
    end

    private

    def process_geo_extension(extension)
      rdf = Nokogiri::XML(extension.children.to_s)
      [
        rdf.xpath('//dc:format', dc: 'http://purl.org/dc/elements/1.1/').text[/format=(.*)$/, 1],
        rdf.xpath('//dc:type', dc: 'http://purl.org/dc/elements/1.1/').text[/#(.*)$/, 1]
      ].compact.join('; ')
    end

    def geo_extensions
      @geo_values ||= @values.select do |value|
        displayLabel(value) =~ /^geo:?$/
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
mods_display-1.5.0 lib/mods_display/fields/geo.rb
mods_display-1.4.0 lib/mods_display/fields/geo.rb
mods_display-1.3.5 lib/mods_display/fields/geo.rb
mods_display-1.3.4 lib/mods_display/fields/geo.rb
mods_display-1.3.3 lib/mods_display/fields/geo.rb
mods_display-1.3.2 lib/mods_display/fields/geo.rb
mods_display-1.3.1 lib/mods_display/fields/geo.rb
mods_display-1.3.0 lib/mods_display/fields/geo.rb
mods_display-1.2.1 lib/mods_display/fields/geo.rb
mods_display-1.2.0 lib/mods_display/fields/geo.rb
mods_display-1.1.0 lib/mods_display/fields/geo.rb
mods_display-1.0.0 lib/mods_display/fields/geo.rb
mods_display-1.0.0.alpha5 lib/mods_display/fields/geo.rb