Sha256: fe5aaed7f666c8e778148733f6be451ace8c7a6b8a826e2be88693dc51aaa1be

Contents?: true

Size: 1.48 KB

Versions: 18

Compression:

Stored size: 1.48 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
        ]
        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.4.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.3.3 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.3.2 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.3.1 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.3.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.2.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.1.2 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.1.1 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.1.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta10 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta9 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta8 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta7 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta6 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta5 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta4 app/models/concerns/curation_concerns/file_set/characterization.rb
curation_concerns-1.0.0.beta3 app/models/concerns/curation_concerns/file_set/characterization.rb