Sha256: 4d0735fbdb4ee3dab8963cd1c7c523b14fcf2418a662cfbdf0da289a07c901e8

Contents?: true

Size: 1.35 KB

Versions: 4

Compression:

Stored size: 1.35 KB

Contents

require_relative 'manifest_builder/iiif_service'
require_relative 'manifest_builder/canvas_builder'
require_relative 'manifest_builder/canvas_builder_factory'
require_relative 'manifest_builder/child_manifest_builder_factory'
require_relative 'manifest_builder/composite_builder'
require_relative 'manifest_builder/composite_builder_factory'
require_relative 'manifest_builder/deep_canvas_builder_factory'
require_relative 'manifest_builder/image_builder'
require_relative 'manifest_builder/image_service_builder'
require_relative 'manifest_builder/record_property_builder'
require_relative 'manifest_builder/resource_builder'
require_relative 'manifest_builder/sequence_builder'
require_relative 'manifest_builder/structure_builder'

module IIIFManifest
  class ManifestBuilder
    attr_reader :work,
                :builders,
                :top_record_factory
    def initialize(work, builders:, top_record_factory:)
      @work = work
      @builders = builders
      @top_record_factory = top_record_factory
    end

    def apply(collection)
      collection['manifests'] ||= []
      collection['manifests'] << to_h
      collection
    end

    def to_h
      @to_h ||= builders.new(work).apply(top_record)
    end

    private

      def manifest
        @manifest ||= manifest_builder_class
      end

      def top_record
        top_record_factory.new
      end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
iiif_manifest-1.0.1 lib/iiif_manifest/manifest_builder.rb
iiif_manifest-1.0.0 lib/iiif_manifest/manifest_builder.rb
iiif_manifest-0.6.0 lib/iiif_manifest/manifest_builder.rb
iiif_manifest-0.5.0 lib/iiif_manifest/manifest_builder.rb