Class: IIIF::V3::Presentation::Sequence

Inherits:
AbstractResource show all
Defined in:
lib/iiif/v3/presentation/sequence.rb

Direct Known Subclasses

Range

Constant Summary collapse

TYPE =
'Sequence'.freeze

Constants inherited from AbstractResource

AbstractResource::CONTENT_RESOURCE_PROPERTIES, AbstractResource::PAGING_PROPERTIES

Constants included from HashBehaviours

HashBehaviours::SIMPLE_SELF_RETURNERS

Instance Method Summary collapse

Methods inherited from AbstractResource

#any_type_keys, from_ordered_hash, #hash_only_keys, #int_only_keys, #legal_viewing_direction_values, #numeric_only_keys, parse, #required_keys, #string_only_keys, #to_json, #to_ordered_hash, #uri_only_keys

Methods included from HashBehaviours

#clear, #merge, #merge!, #reject!, #select, #select!

Constructor Details

#initialize(hsh = {}) ⇒ Sequence

Returns a new instance of Sequence.



28
29
30
31
# File 'lib/iiif/v3/presentation/sequence.rb', line 28

def initialize(hsh={})
  hsh['type'] = TYPE unless hsh.has_key? 'type'
  super(hsh)
end

Instance Method Details

#array_only_keysObject

NOTE: allowing 'items' or 'canvases' as Universal Viewer currently only accepts canvases see https://github.com/sul-dlss/osullivan/issues/27, sul-dlss/purl/issues/167



20
21
22
# File 'lib/iiif/v3/presentation/sequence.rb', line 20

def array_only_keys
  super + %w{ canvases }
end


24
25
26
# File 'lib/iiif/v3/presentation/sequence.rb', line 24

def legal_viewing_hint_values
  %w{ individuals paged continuous auto-advance }
end

#prohibited_keysObject

NOTE: relaxing requirement for items as Universal Viewer currently only accepts canvases see https://github.com/sul-dlss/osullivan/issues/27, sul-dlss/purl/issues/167 def required_keys super + %w{ items } end



14
15
16
# File 'lib/iiif/v3/presentation/sequence.rb', line 14

def prohibited_keys
  super + CONTENT_RESOURCE_PROPERTIES + PAGING_PROPERTIES + %w{ nav_date content_annotations }
end

#validateObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/iiif/v3/presentation/sequence.rb', line 33

def validate
  super

  # Canvas object list
  # NOTE: allowing 'items' or 'canvases' as Universal Viewer currently only accepts canvases
  #  see https://github.com/sul-dlss/osullivan/issues/27, sul-dlss/purl/issues/167
  unless (self['items'] && self['items'].any?) ||
         (self['canvases'] && self['canvases'].any?)
    m = 'The (items or canvases) list must have at least one entry.'
    raise IIIF::V3::Presentation::MissingRequiredKeyError, m
  end
  # TODO: startCanvas: A link from a Sequence or Range to a Canvas that is contained within it

  # TODO: All external Sequences must have a dereference-able http(s) URI
end