Sha256: 10c75a40e8ce5c43489175073ee1e3061441e5a94b14c60be6b7f95331512d5f

Contents?: true

Size: 1.16 KB

Versions: 11

Compression:

Stored size: 1.16 KB

Contents

module IIIFManifest
  class ManifestBuilder
    class SequenceBuilder
      attr_reader :work, :canvas_builder_factory, :sequence_factory
      def initialize(work, canvas_builder_factory:, sequence_factory:)
        @work = work
        @canvas_builder_factory = canvas_builder_factory
        @sequence_factory = sequence_factory
      end

      def apply(manifest)
        # sequence.viewing_hint = manifest.viewing_hint
        manifest.sequences += [sequence] unless empty?
        manifest
      end

      def empty?
        sequence.canvases.empty?
      end

      private

      def canvas_builder
        canvas_builder_factory.from(work)
      end

      def sequence
        @sequence ||=
          begin
            sequence = sequence_factory.new
            sequence['@id'] ||= work.manifest_url + '/sequence/normal'
            sequence['rendering'] ||= populate_sequence_rendering
            canvas_builder.apply(sequence)
            sequence
          end
      end

      def populate_sequence_rendering
        if work.respond_to?(:sequence_rendering)
          work.sequence_rendering.each(&:to_h)
        else
          []
        end
      end
    end
  end
end

Version data entries

11 entries across 11 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/manifest_builder/sequence_builder.rb
iiif_manifest-1.6.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-1.5.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-1.4.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-1.3.1 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-1.3.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-1.2.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-1.1.1 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-1.1.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-0.4.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb
iiif_manifest-0.3.0 lib/iiif_manifest/manifest_builder/sequence_builder.rb