lib/dwc_archive/metadata.rb
# frozen_string_literal: true
class DarwinCore
# Represents data from EML (Ecological Metadata Language) file
class Metadata
attr_reader :metadata
alias data metadata
def initialize(archive = nil)
@archive = archive
@metadata = @archive.eml
end
def id
fix_nil { @metadata[:eml][:dataset][:attributes][:id] }
end
def package_id
fix_nil { @metadata.data[:eml][:attributes][:packageId] }
end
def title
fix_nil { @metadata[:eml][:dataset][:title] }
end
def authors
return nil unless defined?(@metadata[:eml][:dataset][:creator])
authors = [@metadata[:eml][:dataset][:creator]].flatten
authors.map do |au|
{ first_name: au[:individualName][:givenName],
last_name: au[:individualName][:surName],
email: au[:electronicMailAddress] }
end
end
def abstract
fix_nil { @metadata[:eml][:dataset][:abstract] }
end
def citation
fix_nil { @metadata[:eml][:additionalMetadata][:metadata][:citation] }
end
def url
fix_nil { @metadata[:eml][:dataset][:distribution][:online][:url] }
end
private
def fix_nil
yield
rescue NoMethodError
nil
end
end
end