Sha256: 59e169d7568e102f30b71e71955312388da15fb0758059acfdeff9fe0ffbd378

Contents?: true

Size: 1.05 KB

Versions: 4

Compression:

Stored size: 1.05 KB

Contents

module Merritt
  class Manifest
    # A specialization of {Manifest} for Merritt object submissions.
    class Object < Manifest

      # Creates a new {Manifest::Object}
      # @param files [Array<Manifest::File>] an array of data files to be converted to entries.
      #   (Note that these not be actual {Manifest::File} objects so long as they respond to,
      #   at minimum, `#file_url`. The other {Manifest::File} fields are optional.)
      def initialize(files:)
        super(
          profile: 'http://uc3.cdlib.org/registry/ingest/manifest/mrt-ingest-manifest',
          prefixes: Merritt::Manifest::Fields::Object.prefixes,
          fields: Merritt::Manifest::Fields::Object.fields,
          entries: to_entries(files)
        )
      end

      private

      def to_entries(files)
        files.map do |file|
          Merritt::Manifest::Fields::Object.map do |field|
            field_name = field.field_name
            field_value = field.value_from(file)
            [field_name, field_value]
          end.to_h
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
merritt-manifest-0.1.3 lib/merritt/manifest/object.rb
merritt-manifest-0.1.2 lib/merritt/manifest/object.rb
merritt-manifest-0.1.1 lib/merritt/manifest/object.rb
merritt-manifest-0.1.0 lib/merritt/manifest/object.rb