diff --git a/.rubocop.yml b/.rubocop.yml index 747ae6f..d0050da 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,7 @@ require: rubocop-rspec inherit_from: .rubocop_todo.yml +inherit_gem: + bixby: bixby_default.yml AllCops: DisplayCopNames: true diff --git a/iiif_manifest.gemspec b/iiif_manifest.gemspec index 67943bb..3ebf201 100644 --- a/iiif_manifest.gemspec +++ b/iiif_manifest.gemspec @@ -19,6 +19,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'activesupport', '>= 4' + spec.add_development_dependency 'bixby', '~> 1.0' spec.add_development_dependency 'bundler', '~> 1.11' spec.add_development_dependency 'pry-byebug' spec.add_development_dependency 'rake', '~> 10.0' diff --git a/lib/iiif_manifest/manifest_builder.rb b/lib/iiif_manifest/manifest_builder.rb index 73ff3bf..bf4023d 100644 --- a/lib/iiif_manifest/manifest_builder.rb +++ b/lib/iiif_manifest/manifest_builder.rb @@ -35,12 +35,12 @@ def to_h private - def manifest - @manifest ||= manifest_builder_class - end + def manifest + @manifest ||= manifest_builder_class + end - def top_record - top_record_factory.new - end + def top_record + top_record_factory.new + end end end diff --git a/lib/iiif_manifest/manifest_builder/canvas_builder.rb b/lib/iiif_manifest/manifest_builder/canvas_builder.rb index d8ebbc4..dd0a867 100644 --- a/lib/iiif_manifest/manifest_builder/canvas_builder.rb +++ b/lib/iiif_manifest/manifest_builder/canvas_builder.rb @@ -28,18 +28,18 @@ def apply(sequence) private - def display_image - record.display_image if record.respond_to?(:display_image) - end - - def apply_record_properties - canvas['@id'] = path - canvas.label = record.to_s - end - - def attach_image - image_builder.new(display_image).apply(canvas) - end + def display_image + record.display_image if record.respond_to?(:display_image) + end + + def apply_record_properties + canvas['@id'] = path + canvas.label = record.to_s + end + + def attach_image + image_builder.new(display_image).apply(canvas) + end end end end diff --git a/lib/iiif_manifest/manifest_builder/canvas_builder_factory.rb b/lib/iiif_manifest/manifest_builder/canvas_builder_factory.rb index ae736e6..7b39d08 100644 --- a/lib/iiif_manifest/manifest_builder/canvas_builder_factory.rb +++ b/lib/iiif_manifest/manifest_builder/canvas_builder_factory.rb @@ -17,9 +17,9 @@ def from(work) private - def file_set_presenters(work) - work.file_set_presenters - end + def file_set_presenters(work) + work.file_set_presenters + end end end end diff --git a/lib/iiif_manifest/manifest_builder/deep_canvas_builder_factory.rb b/lib/iiif_manifest/manifest_builder/deep_canvas_builder_factory.rb index 825fb08..6de4a61 100644 --- a/lib/iiif_manifest/manifest_builder/deep_canvas_builder_factory.rb +++ b/lib/iiif_manifest/manifest_builder/deep_canvas_builder_factory.rb @@ -26,13 +26,13 @@ def each(&block) private - def file_set_presenters - work.try(:file_set_presenters) || [] - end + def file_set_presenters + work.try(:file_set_presenters) || [] + end - def work_presenters - work.try(:work_presenters) || [] - end + def work_presenters + work.try(:work_presenters) || [] + end end end end diff --git a/lib/iiif_manifest/manifest_builder/image_builder.rb b/lib/iiif_manifest/manifest_builder/image_builder.rb index 1836ab1..ddacc0d 100644 --- a/lib/iiif_manifest/manifest_builder/image_builder.rb +++ b/lib/iiif_manifest/manifest_builder/image_builder.rb @@ -18,17 +18,17 @@ def apply(canvas) private - def build_resource - resource_builder.apply(annotation) - end + def build_resource + resource_builder.apply(annotation) + end - def resource_builder - resource_builder_factory.new(display_image) - end + def resource_builder + resource_builder_factory.new(display_image) + end - def annotation - @annotation ||= iiif_annotation_factory.new - end + def annotation + @annotation ||= iiif_annotation_factory.new + end end end end diff --git a/lib/iiif_manifest/manifest_builder/image_service_builder.rb b/lib/iiif_manifest/manifest_builder/image_service_builder.rb index e9be7ae..91fcb3e 100644 --- a/lib/iiif_manifest/manifest_builder/image_service_builder.rb +++ b/lib/iiif_manifest/manifest_builder/image_service_builder.rb @@ -16,9 +16,9 @@ def apply(resource) private - def service - @service ||= iiif_service_factory.new - end + def service + @service ||= iiif_service_factory.new + end end end end diff --git a/lib/iiif_manifest/manifest_builder/record_property_builder.rb b/lib/iiif_manifest/manifest_builder/record_property_builder.rb index 0f3e6ad..31cfd1d 100644 --- a/lib/iiif_manifest/manifest_builder/record_property_builder.rb +++ b/lib/iiif_manifest/manifest_builder/record_property_builder.rb @@ -8,7 +8,6 @@ def initialize(record, iiif_search_service_factory:, iiif_autocomplete_service_f @iiif_autocomplete_service_factory = iiif_autocomplete_service_factory end - # rubocop:disable Metrics/AbcSize def apply(manifest) manifest['@id'] = record.manifest_url.to_s manifest.label = record.to_s @@ -23,65 +22,65 @@ def apply(manifest) private - def viewing_hint - (record.respond_to?(:viewing_hint) && record.send(:viewing_hint)) - end + def viewing_hint + (record.respond_to?(:viewing_hint) && record.send(:viewing_hint)) + end - def viewing_direction - (record.respond_to?(:viewing_direction) && record.send(:viewing_direction)) - end + def viewing_direction + (record.respond_to?(:viewing_direction) && record.send(:viewing_direction)) + end - def autocomplete_service - (record.respond_to?(:autocomplete_service) && record.send(:autocomplete_service)) - end + def autocomplete_service + (record.respond_to?(:autocomplete_service) && record.send(:autocomplete_service)) + end - def search_service - (record.respond_to?(:search_service) && record.send(:search_service)) - end + def search_service + (record.respond_to?(:search_service) && record.send(:search_service)) + end - def iiif_search_service - @iiif_search_service ||= iiif_search_service_factory.new - end + def iiif_search_service + @iiif_search_service ||= iiif_search_service_factory.new + end - def iiif_autocomplete_service - @iiif_autocomplete_service ||= iiif_autocomplete_service_factory.new - end + def iiif_autocomplete_service + @iiif_autocomplete_service ||= iiif_autocomplete_service_factory.new + end - # Build services. Currently supported: - # search_service, with (optional) embedded autocomplete service - # - # @return [Array] array of services - def services - iiif_search_service.search_service = search_service - iiif_autocomplete_service.autocomplete_service = autocomplete_service - iiif_search_service.service = iiif_autocomplete_service if autocomplete_service.present? - [iiif_search_service] - end + # Build services. Currently supported: + # search_service, with (optional) embedded autocomplete service + # + # @return [Array] array of services + def services + iiif_search_service.search_service = search_service + iiif_autocomplete_service.autocomplete_service = autocomplete_service + iiif_search_service.service = iiif_autocomplete_service if autocomplete_service.present? + [iiif_search_service] + end - # Validate manifest_metadata against the IIIF spec format for metadata - # - # @return [Boolean] - def valid_metadata? - return false unless record.respond_to?(:manifest_metadata) - metadata = record.manifest_metadata - valid_metadata_structure?(metadata) && valid_metadata_content?(metadata) - end + # Validate manifest_metadata against the IIIF spec format for metadata + # + # @return [Boolean] + def valid_metadata? + return false unless record.respond_to?(:manifest_metadata) + metadata = record.manifest_metadata + valid_metadata_structure?(metadata) && valid_metadata_content?(metadata) + end - # Manifest metadata must be an array containing hashes - # - # @param metadata [Array] a list of metadata with label and value as required keys for each entry - # @return [Boolean] - def valid_metadata_structure?(metadata) - metadata.is_a?(Array) && metadata.all? { |v| v.is_a?(Hash) } - end + # Manifest metadata must be an array containing hashes + # + # @param metadata [Array] a list of metadata with label and value as required keys for each entry + # @return [Boolean] + def valid_metadata_structure?(metadata) + metadata.is_a?(Array) && metadata.all? { |v| v.is_a?(Hash) } + end - # Manifest Metadata Hashes must contain 'label' and 'value' keys - # - # @param metadata [Array] a list of metadata with label and value as required keys for each entry - # @return [Boolean] - def valid_metadata_content?(metadata) - metadata.all? { |v| v['label'].present? && v['value'].present? } - end + # Manifest Metadata Hashes must contain 'label' and 'value' keys + # + # @param metadata [Array] a list of metadata with label and value as required keys for each entry + # @return [Boolean] + def valid_metadata_content?(metadata) + metadata.all? { |v| v['label'].present? && v['value'].present? } + end end end end diff --git a/lib/iiif_manifest/manifest_builder/resource_builder.rb b/lib/iiif_manifest/manifest_builder/resource_builder.rb index a50969d..f2e12e0 100644 --- a/lib/iiif_manifest/manifest_builder/resource_builder.rb +++ b/lib/iiif_manifest/manifest_builder/resource_builder.rb @@ -20,17 +20,17 @@ def apply(annotation) private - def resource - @resource ||= iiif_resource_factory.new - end + def resource + @resource ||= iiif_resource_factory.new + end - def iiif_endpoint - display_image.try(:iiif_endpoint) - end + def iiif_endpoint + display_image.try(:iiif_endpoint) + end - def image_service_builder - image_service_builder_factory.new(iiif_endpoint) - end + def image_service_builder + image_service_builder_factory.new(iiif_endpoint) + end end end end diff --git a/lib/iiif_manifest/manifest_builder/sequence_builder.rb b/lib/iiif_manifest/manifest_builder/sequence_builder.rb index 31e8f48..a7f8048 100644 --- a/lib/iiif_manifest/manifest_builder/sequence_builder.rb +++ b/lib/iiif_manifest/manifest_builder/sequence_builder.rb @@ -20,28 +20,28 @@ def empty? private - def canvas_builder - canvas_builder_factory.from(work) - end + 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 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 - [] + def populate_sequence_rendering + if work.respond_to?(:sequence_rendering) + work.sequence_rendering.each(&:to_h) + else + [] + end end - end end end end diff --git a/lib/iiif_manifest/manifest_factory.rb b/lib/iiif_manifest/manifest_factory.rb index b90dd76..6a25521 100644 --- a/lib/iiif_manifest/manifest_factory.rb +++ b/lib/iiif_manifest/manifest_factory.rb @@ -29,8 +29,8 @@ def new(work) private - def sammelband?(work) - work.respond_to?(:sammelband?) && work.sammelband? - end + def sammelband?(work) + work.respond_to?(:sammelband?) && work.sammelband? + end end end diff --git a/lib/iiif_manifest/v3/manifest_builder.rb b/lib/iiif_manifest/v3/manifest_builder.rb index c122199..1f4515c 100644 --- a/lib/iiif_manifest/v3/manifest_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder.rb @@ -31,9 +31,9 @@ def to_h private - def top_record - top_record_factory.new - end + def top_record + top_record_factory.new + end end end end diff --git a/lib/iiif_manifest/v3/manifest_builder/body_builder.rb b/lib/iiif_manifest/v3/manifest_builder/body_builder.rb index 73454b4..221edd7 100644 --- a/lib/iiif_manifest/v3/manifest_builder/body_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/body_builder.rb @@ -17,31 +17,31 @@ def apply(annotation) private - def build_body - body['id'] = display_content.url - body['type'] = body_type - body['height'] = display_content.height if display_content.try(:height) - body['width'] = display_content.width if display_content.try(:width) - body['duration'] = display_content.duration if display_content.try(:duration) - body['format'] = display_content.format if display_content.format - body['label'] = display_content.label if display_content.try(:label) - end + def build_body + body['id'] = display_content.url + body['type'] = body_type + body['height'] = display_content.height if display_content.try(:height) + body['width'] = display_content.width if display_content.try(:width) + body['duration'] = display_content.duration if display_content.try(:duration) + body['format'] = display_content.format if display_content.format + body['label'] = display_content.label if display_content.try(:label) + end - def body - @body ||= iiif_body_factory.new - end + def body + @body ||= iiif_body_factory.new + end - def body_type - display_content.try(:type) || 'Image' - end + def body_type + display_content.try(:type) || 'Image' + end - def iiif_endpoint - display_content.try(:iiif_endpoint) - end + def iiif_endpoint + display_content.try(:iiif_endpoint) + end - def image_service_builder - image_service_builder_factory.new(iiif_endpoint) - end + def image_service_builder + image_service_builder_factory.new(iiif_endpoint) + end end end end diff --git a/lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb b/lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb index 349d5ea..d2c75ba 100644 --- a/lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb @@ -39,36 +39,36 @@ def apply(items) private - def display_image - record.display_image if record.respond_to?(:display_image) - end + def display_image + record.display_image if record.respond_to?(:display_image) + end - def display_content - Array.wrap(record.display_content) if record.respond_to?(:display_content) - end + def display_content + Array.wrap(record.display_content) if record.respond_to?(:display_content) + end - def apply_record_properties - canvas['id'] = path - canvas.label = record.to_s - annotation_page['id'] = "#{path}/annotation_page/#{annotation_page.index}" - canvas.items = [annotation_page] - end + def apply_record_properties + canvas['id'] = path + canvas.label = record.to_s + annotation_page['id'] = "#{path}/annotation_page/#{annotation_page.index}" + canvas.items = [annotation_page] + end - def annotation_page - @annotation_page ||= iiif_annotation_page_factory.new - end + def annotation_page + @annotation_page ||= iiif_annotation_page_factory.new + end - def attach_image - content_builder.new(display_image).apply(canvas) - end + def attach_image + content_builder.new(display_image).apply(canvas) + end - def attach_content - if display_content.size == 1 - content_builder.new(display_content.first).apply(canvas) - else - choice_builder.new(display_content).apply(canvas) + def attach_content + if display_content.size == 1 + content_builder.new(display_content.first).apply(canvas) + else + choice_builder.new(display_content).apply(canvas) + end end - end end end end diff --git a/lib/iiif_manifest/v3/manifest_builder/choice_builder.rb b/lib/iiif_manifest/v3/manifest_builder/choice_builder.rb index ce7a476..0eb730c 100644 --- a/lib/iiif_manifest/v3/manifest_builder/choice_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/choice_builder.rb @@ -23,24 +23,24 @@ def apply(canvas) private - def build_choice - display_content.each do |content| - content_body = body_builder(content).apply(iiif_annotation_factory.new) - choice.items += [content_body] + def build_choice + display_content.each do |content| + content_body = body_builder(content).apply(iiif_annotation_factory.new) + choice.items += [content_body] + end end - end - def body_builder(content) - body_builder_factory.new(content) - end + def body_builder(content) + body_builder_factory.new(content) + end - def annotation - @annotation ||= iiif_annotation_factory.new - end + def annotation + @annotation ||= iiif_annotation_factory.new + end - def choice - @choice ||= iiif_choice_factory.new - end + def choice + @choice ||= iiif_choice_factory.new + end end end end diff --git a/lib/iiif_manifest/v3/manifest_builder/content_builder.rb b/lib/iiif_manifest/v3/manifest_builder/content_builder.rb index 761dc36..2d39ae8 100644 --- a/lib/iiif_manifest/v3/manifest_builder/content_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/content_builder.rb @@ -21,17 +21,17 @@ def apply(canvas) private - def build_resource - body_builder.apply(annotation) - end + def build_resource + body_builder.apply(annotation) + end - def body_builder - body_builder_factory.new(display_content) - end + def body_builder + body_builder_factory.new(display_content) + end - def annotation - @annotation ||= iiif_annotation_factory.new - end + def annotation + @annotation ||= iiif_annotation_factory.new + end end end end diff --git a/lib/iiif_manifest/v3/manifest_builder/image_service_builder.rb b/lib/iiif_manifest/v3/manifest_builder/image_service_builder.rb index 0364e83..acc30dc 100644 --- a/lib/iiif_manifest/v3/manifest_builder/image_service_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/image_service_builder.rb @@ -17,18 +17,18 @@ def apply(resource) private - def determine_type(context) - case context - when 'http://iiif.io/api/image/1/context.json' - 'ImageService1' - when 'http://iiif.io/api/image/2/context.json' - 'ImageService2' + def determine_type(context) + case context + when 'http://iiif.io/api/image/1/context.json' + 'ImageService1' + when 'http://iiif.io/api/image/2/context.json' + 'ImageService2' + end end - end - def service - @service ||= iiif_service_factory.new - end + def service + @service ||= iiif_service_factory.new + end end end end diff --git a/lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb b/lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb index b8db378..6e81306 100644 --- a/lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb @@ -14,7 +14,6 @@ def initialize(record, end # rubocop:disable Metrics/AbcSize - # rubocop:disable Metrics/MethodLength def apply(manifest) manifest['id'] = record.manifest_url.to_s manifest.label = record.to_s @@ -49,55 +48,55 @@ def populate_rendering private - def canvas_builder - canvas_builder_factory.from(record) - end + def canvas_builder + canvas_builder_factory.from(record) + end - # Validate manifest_metadata against the IIIF spec format for metadata - # - # @return [Boolean] - def valid_v3_metadata? - return false unless record.respond_to?(:manifest_metadata) - metadata = record.manifest_metadata - valid_v3_metadata_structure?(metadata) && valid_metadata_content?(metadata) - end + # Validate manifest_metadata against the IIIF spec format for metadata + # + # @return [Boolean] + def valid_v3_metadata? + return false unless record.respond_to?(:manifest_metadata) + metadata = record.manifest_metadata + valid_v3_metadata_structure?(metadata) && valid_metadata_content?(metadata) + end - # Manifest metadata must be an array containing hashes - # - # @param metadata [Array] a list of metadata with label and value as required keys for each entry - # @return [Boolean] - def valid_v3_metadata_structure?(metadata) - metadata.is_a?(Array) && metadata.all? do |v| - v.is_a?(Hash) && v.all? do |k2, v2| - k2.is_a?(String) && v2.is_a?(Hash) && v2.all? do |k3, v3| - k3.is_a?(String) && v3.is_a?(Array) + # Manifest metadata must be an array containing hashes + # + # @param metadata [Array] a list of metadata with label and value as required keys for each entry + # @return [Boolean] + def valid_v3_metadata_structure?(metadata) + metadata.is_a?(Array) && metadata.all? do |v| + v.is_a?(Hash) && v.all? do |k2, v2| + k2.is_a?(String) && v2.is_a?(Hash) && v2.all? do |k3, v3| + k3.is_a?(String) && v3.is_a?(Array) + end end end end - end - def transform_metadata(metadata) - metadata.collect { |field| transform_field(field) } - end + def transform_metadata(metadata) + metadata.collect { |field| transform_field(field) } + end - def transform_field(field) - metadata_field = {} - metadata_field['label'] = transform_obj(field['label']) - metadata_field['value'] = transform_obj(field['value']) - metadata_field - end + def transform_field(field) + metadata_field = {} + metadata_field['label'] = transform_obj(field['label']) + metadata_field['value'] = transform_obj(field['value']) + metadata_field + end - def transform_obj(obj) - obj.is_a?(Hash) ? transform_hash_value(obj) : transform_obj_value(obj) - end + def transform_obj(obj) + obj.is_a?(Hash) ? transform_hash_value(obj) : transform_obj_value(obj) + end - def transform_obj_value(obj) - { '@none' => Array(obj) } - end + def transform_obj_value(obj) + { '@none' => Array(obj) } + end - def transform_hash_value(hash) - { hash['@language'] => Array(hash['@value']) } - end + def transform_hash_value(hash) + { hash['@language'] => Array(hash['@value']) } + end end end end diff --git a/lib/iiif_manifest/v3/manifest_factory.rb b/lib/iiif_manifest/v3/manifest_factory.rb index cdcc8f6..df1c5c5 100644 --- a/lib/iiif_manifest/v3/manifest_factory.rb +++ b/lib/iiif_manifest/v3/manifest_factory.rb @@ -30,9 +30,9 @@ def new(work) private - def sammelband?(work) - work.respond_to?(:sammelband?) && work.sammelband? - end + def sammelband?(work) + work.respond_to?(:sammelband?) && work.sammelband? + end end end end