Sha256: 58b2a51cdcfa8f0a3e8b8a28550dfd9e815ca3234a989d23eb0f9f5f801c90d6

Contents?: true

Size: 1.1 KB

Versions: 65

Compression:

Stored size: 1.1 KB

Contents

# This builds classes for metadata nodes (nodes that describe a binary)
module ActiveFedora::WithMetadata
  class DefaultMetadataClassFactory
    class_attribute :metadata_base_class, :file_metadata_schemas, :file_metadata_strategy
    self.metadata_base_class = MetadataNode
    self.file_metadata_schemas = [DefaultSchema]
    self.file_metadata_strategy = DefaultStrategy

    class << self
      def build(parent, &block)
        create_class(parent).tap do |resource_class|
          file_metadata_schemas.each do |schema|
            resource_class.apply_schema(schema, file_metadata_strategy)
          end
          resource_class.exec_block(&block) if block_given?
        end
      end

      private

        # Make a subclass of MetadataNode named GeneratedMetadataSchema and set its
        # parent_class attribute to have the value of the current class.
        def create_class(parent_klass)
          Class.new(metadata_base_class).tap do |klass|
            parent_klass.const_set(:GeneratedMetadataSchema, klass)
            klass.parent_class = parent_klass
          end
        end
    end
  end
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
active-fedora-15.0.1 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-15.0.0 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-14.0.1 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-14.0.0 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.3.0 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-12.2.4 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.2.7 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.2.5 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.2.4 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-12.2.3 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.2.3 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.2.2 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.2.0 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-13.1.3 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-11.5.6 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-12.2.2 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-11.2.1 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-12.2.1 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-12.0.3 lib/active_fedora/with_metadata/default_metadata_class_factory.rb
active-fedora-11.5.5 lib/active_fedora/with_metadata/default_metadata_class_factory.rb