Sha256: 8f6181dc30569230bd619cd5a616bec460328257dc1a35864e186e509e7135a5

Contents?: true

Size: 1.54 KB

Versions: 5

Compression:

Stored size: 1.54 KB

Contents

module IIIFManifest
  module V3
    class ManifestBuilder
      class ChoiceBuilder
        attr_reader :display_content, :iiif_annotation_factory, :body_builder_factory, :iiif_choice_factory
        def initialize(display_content, iiif_annotation_factory:, body_builder_factory:, iiif_choice_factory:)
          @display_content = display_content
          @iiif_annotation_factory = iiif_annotation_factory
          @body_builder_factory = body_builder_factory
          @iiif_choice_factory = iiif_choice_factory
          build_choice
        end

        def apply(canvas)
          # Assume first item in canvas is an annotation page
          annotation['id'] = "#{canvas.items.first['id']}/annotation/#{annotation.index}"
          annotation['target'] = canvas['id']
          canvas['width'] = choice.items.first['width']
          canvas['height'] = choice.items.first['height']
          canvas['duration'] = choice.items.first['duration']
          annotation.body = choice
          canvas.items.first.items += [annotation]
        end

        private

        def build_choice
          display_content.each do |content|
            content_body = body_builder(content).apply(iiif_annotation_factory.new)
            choice.items += [content_body]
          end
        end

        def body_builder(content)
          body_builder_factory.new(content)
        end

        def annotation
          @annotation ||= iiif_annotation_factory.new
        end

        def choice
          @choice ||= iiif_choice_factory.new
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/iiif_manifest-1.5.0/lib/iiif_manifest/v3/manifest_builder/choice_builder.rb
iiif_manifest-1.6.0 lib/iiif_manifest/v3/manifest_builder/choice_builder.rb
iiif_manifest-1.5.0 lib/iiif_manifest/v3/manifest_builder/choice_builder.rb
iiif_manifest-1.4.0 lib/iiif_manifest/v3/manifest_builder/choice_builder.rb
iiif_manifest-1.3.1 lib/iiif_manifest/v3/manifest_builder/choice_builder.rb