Sha256: 0c1b5d2ad98a7e10ada89e0ff63fa3c88270556310438632597d1b413e0e0405

Contents?: true

Size: 1.2 KB

Versions: 4

Compression:

Stored size: 1.2 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

4 entries across 4 versions & 1 rubygems

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