Sha256: 060c6ff9d7de6c29628a888eaaa1376c56ee6e69d9e31bc3bd98f6a282c9f09a

Contents?: true

Size: 1.52 KB

Versions: 18

Compression:

Stored size: 1.52 KB

Contents

# This module points the FileSet to the location of the technical metdata.
# By default, the file holding the metadata is :original_file and the terms
# are listed under ::characterization_terms.
# Implementations may define their own terms or use a different source file, but
# any terms must be set on the ::characterization_proxy by the Hydra::Works::CharacterizationService
#
# class MyFileSet
#   include CurationConcerns::FileSetBehavior
# end
#
# MyFileSet.characterization_proxy = :master_file
# MyFileSet.characterization_terms = [:term1, :term2, :term3]
module CurationConcerns
  module FileSet
    module Characterization
      extend ActiveSupport::Concern

      included do
        class_attribute :characterization_terms, :characterization_proxy
        self.characterization_terms = [
          :format_label, :file_size, :height, :width, :filename, :well_formed,
          :page_count, :file_title, :last_modified, :original_checksum, :mime_type,
          :duration, :sample_rate
        ]
        self.characterization_proxy = :original_file

        delegate(*characterization_terms, to: :characterization_proxy)

        def characterization_proxy
          send(self.class.characterization_proxy) || NullCharacterizationProxy.new
        end

        def characterization_proxy?
          !characterization_proxy.is_a?(NullCharacterizationProxy)
        end
      end

      class NullCharacterizationProxy
        def method_missing(*_args)
          []
        end

        def mime_type
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
curation_concerns-1.7.8 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.7 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-2.0.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-2.0.0.rc2 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.6 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.5 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.4 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.3 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.2 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-2.0.0.rc1 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.1 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.7.0.beta1 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.6.3 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.6.2 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.6.1 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.6.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.5.0 app/models/concerns/curation_concerns/file_set/characterization.rb