From caea354bf409c2f9e5f5c1cec1fcb96a068faad9 Mon Sep 17 00:00:00 2001 From: Bess Sadler Date: Fri, 12 Jun 2020 12:47:36 -0400 Subject: [PATCH] Upgrade to Bixby 3.0 * Align style automatically where it's safe to do so * Ignore everything else for now --- .rubocop.yml | 21 ++- .rubocop_todo.yml | 121 ++++++------------ iiif_manifest.gemspec | 4 +- lib/iiif_manifest/manifest_builder.rb | 12 +- .../manifest_builder/canvas_builder.rb | 24 ++-- .../canvas_builder_factory.rb | 6 +- .../deep_canvas_builder_factory.rb | 18 +-- .../manifest_builder/image_builder.rb | 18 +-- .../manifest_builder/image_service_builder.rb | 6 +- .../record_property_builder.rb | 70 +++++----- .../manifest_builder/resource_builder.rb | 18 +-- .../manifest_builder/sequence_builder.rb | 38 +++--- lib/iiif_manifest/manifest_factory.rb | 6 +- lib/iiif_manifest/v3/manifest_builder.rb | 14 +- .../v3/manifest_builder/body_builder.rb | 74 +++++------ .../v3/manifest_builder/canvas_builder.rb | 48 +++---- .../v3/manifest_builder/choice_builder.rb | 28 ++-- .../v3/manifest_builder/content_builder.rb | 18 +-- .../manifest_builder/image_service_builder.rb | 20 +-- .../record_property_builder.rb | 80 ++++++------ lib/iiif_manifest/v3/manifest_factory.rb | 6 +- spec/iiif_manifest_spec.rb | 1 + spec/lib/iiif_manifest/display_image_spec.rb | 1 + spec/lib/iiif_manifest/iiif_endpoint_spec.rb | 1 + .../manifest_builder/resource_builder_spec.rb | 1 + .../iiif_manifest/manifest_factory_spec.rb | 1 + .../v3/manifest_builder/body_builder_spec.rb | 1 + .../manifest_builder/canvas_builder_spec.rb | 1 + .../structure_builder_spec.rb | 1 + .../iiif_manifest/v3/manifest_factory_spec.rb | 1 + spec/spec_helper.rb | 1 + 31 files changed, 315 insertions(+), 345 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index d0050da..2815672 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,22 +1,29 @@ -require: rubocop-rspec -inherit_from: .rubocop_todo.yml inherit_gem: bixby: bixby_default.yml +inherit_from: .rubocop_todo.yml + AllCops: + TargetRubyVersion: 2.6 DisplayCopNames: true + Exclude: + - 'bin/**/*' + - 'vendor/**/*' -Metrics/LineLength: +Layout/LineLength: Max: 120 -Metrics/BlockLength: - Exclude: - - 'spec/**/*.rb' - Naming/MethodName: Exclude: - 'lib/iiif_manifest/manifest_builder/iiif_service.rb' - 'lib/iiif_manifest/v3/manifest_builder/iiif_service.rb' +Metrics/BlockLength: + Exclude: + - 'spec/**/*.rb' + +RSpec/ExampleLength: + Enabled: false + RSpec/MultipleExpectations: Enabled: false diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index ed31779..7d216dc 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,36 +1,41 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2017-07-26 10:46:37 -0500 using RuboCop version 0.49.1. +# on 2020-06-12 12:53:34 -0400 using RuboCop version 0.85.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 2 -Metrics/AbcSize: +# Offense count: 8 +# Cop supports --auto-correct. +Layout/CommentIndentation: Exclude: - - 'lib/iiif_manifest/manifest_builder/resource_builder.rb' - - 'lib/iiif_manifest/manifest_factory.rb' - - 'lib/iiif_manifest/v3/manifest_builder/body_builder.rb' - - 'lib/iiif_manifest/v3/manifest_factory.rb' - - 'lib/iiif_manifest/v3/manifest_builder/content_builder.rb' - - 'lib/iiif_manifest/v3/manifest_builder/choice_builder.rb' + - 'lib/iiif_manifest/manifest_builder/record_property_builder.rb' + - 'lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb' # Offense count: 1 -# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. -# URISchemes: http, https -Metrics/LineLength: - Exclude: - - 'iiif_manifest.gemspec' - - 'lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb' +# Configuration parameters: IgnoredMethods. +Metrics/AbcSize: + Max: 38 -# Offense count: 1 +# Offense count: 2 +# Configuration parameters: CountComments. +Metrics/ClassLength: + Max: 161 + +# Offense count: 2 +# Configuration parameters: CountKeywordArgs. +Metrics/ParameterLists: + Max: 9 + +# Offense count: 2 # Configuration parameters: AssignmentOnly. RSpec/InstanceVariable: Exclude: - 'spec/lib/iiif_manifest/manifest_factory_spec.rb' -# Offense count: 8 +# Offense count: 19 +# Configuration parameters: IgnoreSharedExamples. RSpec/NamedSubject: Exclude: - 'spec/lib/iiif_manifest/display_image_spec.rb' @@ -39,85 +44,35 @@ RSpec/NamedSubject: - 'spec/lib/iiif_manifest/v3/manifest_builder/body_builder_spec.rb' - 'spec/lib/iiif_manifest/v3/manifest_builder/structure_builder_spec.rb' -# Offense count: 1 -# Configuration parameters: IgnoreSymbolicNames. +# Offense count: 17 +# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames. RSpec/VerifiedDoubles: Exclude: - 'spec/lib/iiif_manifest/display_image_spec.rb' - 'spec/lib/iiif_manifest/v3/manifest_builder/canvas_builder_spec.rb' - 'spec/lib/iiif_manifest/v3/manifest_builder/structure_builder_spec.rb' -RSpec/ExampleLength: - Exclude: - - 'spec/lib/iiif_manifest/manifest_factory_spec.rb' - - 'spec/lib/iiif_manifest/v3/manifest_factory_spec.rb' - - 'spec/lib/iiif_manifest/v3/manifest_builder/body_builder_spec.rb' - - 'spec/lib/iiif_manifest/v3/manifest_builder/structure_builder_spec.rb' - - 'spec/lib/iiif_manifest/v3/manifest_builder/canvas_builder_spec.rb' - -# Offense count: 20 -Style/Documentation: +# Offense count: 6 +# Cop supports --auto-correct. +# Configuration parameters: NilOrEmpty, NotPresent, UnlessPresent. +Rails/Blank: Exclude: - - 'lib/iiif_manifest/display_image.rb' - - 'lib/iiif_manifest/iiif_collection.rb' - - 'lib/iiif_manifest/iiif_endpoint.rb' - - 'lib/iiif_manifest/manifest_builder/canvas_builder.rb' - - 'lib/iiif_manifest/manifest_builder/canvas_builder.rb' - - 'lib/iiif_manifest/manifest_builder/canvas_builder_factory.rb' - - 'lib/iiif_manifest/manifest_builder/child_manifest_builder_factory.rb' - - 'lib/iiif_manifest/manifest_builder/composite_builder.rb' - - 'lib/iiif_manifest/manifest_builder/composite_builder_factory.rb' - - 'lib/iiif_manifest/manifest_builder/deep_canvas_builder_factory.rb' - - 'lib/iiif_manifest/manifest_builder/image_builder.rb' - - 'lib/iiif_manifest/manifest_builder/image_service_builder.rb' - - 'lib/iiif_manifest/manifest_builder/record_property_builder.rb' - - 'lib/iiif_manifest/manifest_builder/resource_builder.rb' - - 'lib/iiif_manifest/manifest_builder/sequence_builder.rb' - - 'lib/iiif_manifest/manifest_builder/structure_builder.rb' - - 'lib/iiif_manifest/manifest_builder.rb' - - 'lib/iiif_manifest/manifest_factory.rb' - - 'lib/iiif_manifest/manifest_service_locator.rb' - - 'lib/iiif_manifest.rb' - 'lib/iiif_manifest/manifest_builder/iiif_service.rb' - - 'lib/iiif_manifest/v3.rb' - - 'lib/iiif_manifest/v3/display_content.rb' - - 'lib/iiif_manifest/v3/manifest_factory.rb' - - 'lib/iiif_manifest/v3/manifest_builder/structure_builder.rb' - 'lib/iiif_manifest/v3/manifest_builder/iiif_service.rb' - - 'lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb' - - 'lib/iiif_manifest/v3/manifest_builder/choice_builder.rb' - - 'lib/iiif_manifest/v3/manifest_builder/content_builder.rb' - - 'lib/iiif_manifest/v3/manifest_builder/body_builder.rb' - - 'lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb' - - 'lib/iiif_manifest/v3/manifest_builder/image_service_builder.rb' - - 'lib/iiif_manifest/v3/manifest_builder.rb' - - 'lib/iiif_manifest/v3/manifest_service_locator.rb' - - 'spec/lib/iiif_manifest/manifest_factory_spec.rb' - - 'spec/lib/iiif_manifest/v3/manifest_factory_spec.rb' + +# Offense count: 37 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: always, always_true, never +Style/FrozenStringLiteralComment: + Enabled: false # Offense count: 1 -Style/MethodMissing: +Style/MethodMissingSuper: Exclude: - 'lib/iiif_manifest/manifest_builder/composite_builder.rb' -Metrics/ClassLength: - Exclude: - - 'lib/iiif_manifest/manifest_service_locator.rb' - - 'lib/iiif_manifest/v3/manifest_service_locator.rb' - # Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: MinSize, SupportedStyles. -# SupportedStyles: percent, brackets -Style/SymbolArray: - EnforcedStyle: brackets - -Metrics/ParameterLists: - Exclude: - - 'lib/iiif_manifest/v3/display_content.rb' - - 'lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb' - -RSpec/NestedGroups: +Style/MissingRespondToMissing: Exclude: - - 'spec/lib/iiif_manifest/v3/manifest_factory_spec.rb' - - 'spec/lib/iiif_manifest/v3/manifest_builder/body_builder_spec.rb' + - 'lib/iiif_manifest/manifest_builder/composite_builder.rb' diff --git a/iiif_manifest.gemspec b/iiif_manifest.gemspec index c4262f1..f08da87 100644 --- a/iiif_manifest.gemspec +++ b/iiif_manifest.gemspec @@ -19,12 +19,10 @@ Gem::Specification.new do |spec| spec.add_dependency 'activesupport', '>= 4' - spec.add_development_dependency 'bixby', '~> 1.0' + spec.add_development_dependency 'bixby', '~> 3.0' spec.add_development_dependency 'coveralls' spec.add_development_dependency 'pry-byebug' spec.add_development_dependency 'rake', '>= 12.3.3' spec.add_development_dependency 'rspec', '~> 3.0' spec.add_development_dependency 'rspec_junit_formatter' - spec.add_development_dependency 'rubocop' - spec.add_development_dependency 'rubocop-rspec' end diff --git a/lib/iiif_manifest/manifest_builder.rb b/lib/iiif_manifest/manifest_builder.rb index bf4023d..73ff3bf 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 dd0a867..d8ebbc4 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 7b39d08..ae736e6 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 6de4a61..29a9d7c 100644 --- a/lib/iiif_manifest/manifest_builder/deep_canvas_builder_factory.rb +++ b/lib/iiif_manifest/manifest_builder/deep_canvas_builder_factory.rb @@ -3,9 +3,9 @@ class ManifestBuilder class DeepCanvasBuilderFactory < CanvasBuilderFactory private - def file_set_presenters(work) - DeepFileSetEnumerator.new(work).to_a - end + def file_set_presenters(work) + DeepFileSetEnumerator.new(work).to_a + end end class DeepFileSetEnumerator @@ -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 ddacc0d..1836ab1 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 91fcb3e..e9be7ae 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 31cfd1d..eaacfaa 100644 --- a/lib/iiif_manifest/manifest_builder/record_property_builder.rb +++ b/lib/iiif_manifest/manifest_builder/record_property_builder.rb @@ -22,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 + 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 + 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 + 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 + 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 f2e12e0..a50969d 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 a7f8048..31e8f48 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 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 canvas_builder + canvas_builder_factory.from(work) + end - def populate_sequence_rendering - if work.respond_to?(:sequence_rendering) - work.sequence_rendering.each(&:to_h) - else - [] + 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 diff --git a/lib/iiif_manifest/manifest_factory.rb b/lib/iiif_manifest/manifest_factory.rb index 6a25521..b90dd76 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 b9c6152..2a00e63 100644 --- a/lib/iiif_manifest/v3/manifest_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder.rb @@ -26,10 +26,10 @@ def valid_language_map?(obj) private - def obj_to_language_map(obj) - return nil unless obj.is_a?(String) || (obj.is_a?(Array) && obj.all? { |o| o.is_a?(String) }) - { '@none' => Array(obj) } - end + def obj_to_language_map(obj) + return nil unless obj.is_a?(String) || (obj.is_a?(Array) && obj.all? { |o| o.is_a?(String) }) + { '@none' => Array(obj) } + end end attr_reader :work, @@ -53,9 +53,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 989b0d2..e5b06da 100644 --- a/lib/iiif_manifest/v3/manifest_builder/body_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/body_builder.rb @@ -18,43 +18,43 @@ 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).present? - body['width'] = display_content.width if display_content.try(:width).present? - body['duration'] = display_content.duration if display_content.try(:duration).present? - body['format'] = display_content.format if display_content.try(:format).present? - body['label'] = ManifestBuilder.language_map(display_content.label) if display_content.try(:label).present? - end - - def body - @body ||= iiif_body_factory.new - end - - def body_type - display_content.try(:type) || 'Image' - end - - def iiif_endpoint - display_content.try(:iiif_endpoint) - end - - def image_service_builder - image_service_builder_factory.new(iiif_endpoint) - end - - def auth_service - display_content.try(:auth_service) - end - - def apply_auth_service - body.service = if body['service'].blank? - [auth_service] - else - body['service'] + [auth_service] - end - end + def build_body + body['id'] = display_content.url + body['type'] = body_type + body['height'] = display_content.height if display_content.try(:height).present? + body['width'] = display_content.width if display_content.try(:width).present? + body['duration'] = display_content.duration if display_content.try(:duration).present? + body['format'] = display_content.format if display_content.try(:format).present? + body['label'] = ManifestBuilder.language_map(display_content.label) if display_content.try(:label).present? + end + + def body + @body ||= iiif_body_factory.new + end + + def body_type + display_content.try(:type) || 'Image' + end + + def iiif_endpoint + display_content.try(:iiif_endpoint) + end + + def image_service_builder + image_service_builder_factory.new(iiif_endpoint) + end + + def auth_service + display_content.try(:auth_service) + end + + def apply_auth_service + body.service = if body['service'].blank? + [auth_service] + else + body['service'] + [auth_service] + end + 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 eb32508..428f233 100644 --- a/lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/canvas_builder.rb @@ -41,36 +41,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) && record.display_content.present? - end + def display_content + Array.wrap(record.display_content) if record.respond_to?(:display_content) && record.display_content.present? + end - def apply_record_properties - canvas['id'] = path - canvas.label = ManifestBuilder.language_map(record.to_s) if record.to_s.present? - annotation_page['id'] = "#{path}/annotation_page/#{annotation_page.index}" - canvas.items = [annotation_page] - end + def apply_record_properties + canvas['id'] = path + canvas.label = ManifestBuilder.language_map(record.to_s) if record.to_s.present? + 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) - 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) 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 0eb730c..ce7a476 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] - end + 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 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 2d39ae8..761dc36 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 acc30dc..0364e83 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' - end + 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 - 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 95886dd..03cd889 100644 --- a/lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb +++ b/lib/iiif_manifest/v3/manifest_builder/record_property_builder.rb @@ -37,63 +37,63 @@ def populate_rendering private - def canvas_builder - canvas_builder_factory.from(record) - end + def canvas_builder + canvas_builder_factory.from(record) + end # rubocop:disable Metrics/CyclomaticComplexity - def setup_manifest_from_record(manifest, record) - manifest['id'] = record.manifest_url.to_s - manifest.label = ManifestBuilder.language_map(record.to_s) if record.to_s.present? - manifest.summary = ManifestBuilder.language_map(record.description) if record.try(:description).present? - manifest.behavior = viewing_hint if viewing_hint.present? - manifest.metadata = metadata_from_record(record) - manifest.viewing_direction = viewing_direction if viewing_direction.present? - manifest.service = services if search_service.present? - manifest.rendering = populate_rendering - manifest.homepage = record.homepage if record.try(:homepage).present? - end + def setup_manifest_from_record(manifest, record) + manifest['id'] = record.manifest_url.to_s + manifest.label = ManifestBuilder.language_map(record.to_s) if record.to_s.present? + manifest.summary = ManifestBuilder.language_map(record.description) if record.try(:description).present? + manifest.behavior = viewing_hint if viewing_hint.present? + manifest.metadata = metadata_from_record(record) + manifest.viewing_direction = viewing_direction if viewing_direction.present? + manifest.service = services if search_service.present? + manifest.rendering = populate_rendering + manifest.homepage = record.homepage if record.try(:homepage).present? + end # rubocop:enable Metrics/CyclomaticComplexity - def metadata_from_record(record) - if valid_v3_metadata? - record.manifest_metadata - elsif valid_metadata? - transform_metadata(record.manifest_metadata) - end + def metadata_from_record(record) + if valid_v3_metadata? + record.manifest_metadata + elsif valid_metadata? + transform_metadata(record.manifest_metadata) end + 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_fields?(metadata) - end + def valid_v3_metadata? + return false unless record.respond_to?(:manifest_metadata) + metadata = record.manifest_metadata + valid_v3_metadata_fields?(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_fields?(metadata) - metadata.is_a?(Array) && metadata.all? do |metadata_field| - metadata_field.is_a?(Hash) && - ManifestBuilder.valid_language_map?(metadata_field['label']) && - ManifestBuilder.valid_language_map?(metadata_field['value']) - end + def valid_v3_metadata_fields?(metadata) + metadata.is_a?(Array) && metadata.all? do |metadata_field| + metadata_field.is_a?(Hash) && + ManifestBuilder.valid_language_map?(metadata_field['label']) && + ManifestBuilder.valid_language_map?(metadata_field['value']) 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'] = ManifestBuilder.language_map(field['label']) - metadata_field['value'] = ManifestBuilder.language_map(field['value']) - metadata_field - end + def transform_field(field) + metadata_field = {} + metadata_field['label'] = ManifestBuilder.language_map(field['label']) + metadata_field['value'] = ManifestBuilder.language_map(field['value']) + metadata_field + end end end end diff --git a/lib/iiif_manifest/v3/manifest_factory.rb b/lib/iiif_manifest/v3/manifest_factory.rb index df1c5c5..cdcc8f6 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 diff --git a/spec/iiif_manifest_spec.rb b/spec/iiif_manifest_spec.rb index 41ecea5..b418d87 100644 --- a/spec/iiif_manifest_spec.rb +++ b/spec/iiif_manifest_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' describe IIIFManifest do diff --git a/spec/lib/iiif_manifest/display_image_spec.rb b/spec/lib/iiif_manifest/display_image_spec.rb index a468f8c..6a0ce0b 100644 --- a/spec/lib/iiif_manifest/display_image_spec.rb +++ b/spec/lib/iiif_manifest/display_image_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::DisplayImage do diff --git a/spec/lib/iiif_manifest/iiif_endpoint_spec.rb b/spec/lib/iiif_manifest/iiif_endpoint_spec.rb index bf36520..42f67fe 100644 --- a/spec/lib/iiif_manifest/iiif_endpoint_spec.rb +++ b/spec/lib/iiif_manifest/iiif_endpoint_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::IIIFEndpoint do diff --git a/spec/lib/iiif_manifest/manifest_builder/resource_builder_spec.rb b/spec/lib/iiif_manifest/manifest_builder/resource_builder_spec.rb index 1d7a6bc..3552efb 100644 --- a/spec/lib/iiif_manifest/manifest_builder/resource_builder_spec.rb +++ b/spec/lib/iiif_manifest/manifest_builder/resource_builder_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::ManifestBuilder::ResourceBuilder do diff --git a/spec/lib/iiif_manifest/manifest_factory_spec.rb b/spec/lib/iiif_manifest/manifest_factory_spec.rb index 9f2fff2..eb955f1 100644 --- a/spec/lib/iiif_manifest/manifest_factory_spec.rb +++ b/spec/lib/iiif_manifest/manifest_factory_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::ManifestFactory do diff --git a/spec/lib/iiif_manifest/v3/manifest_builder/body_builder_spec.rb b/spec/lib/iiif_manifest/v3/manifest_builder/body_builder_spec.rb index d761a4a..1afaa5c 100644 --- a/spec/lib/iiif_manifest/v3/manifest_builder/body_builder_spec.rb +++ b/spec/lib/iiif_manifest/v3/manifest_builder/body_builder_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::V3::ManifestBuilder::BodyBuilder do diff --git a/spec/lib/iiif_manifest/v3/manifest_builder/canvas_builder_spec.rb b/spec/lib/iiif_manifest/v3/manifest_builder/canvas_builder_spec.rb index 3ccfa86..f994260 100644 --- a/spec/lib/iiif_manifest/v3/manifest_builder/canvas_builder_spec.rb +++ b/spec/lib/iiif_manifest/v3/manifest_builder/canvas_builder_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::V3::ManifestBuilder::CanvasBuilder do diff --git a/spec/lib/iiif_manifest/v3/manifest_builder/structure_builder_spec.rb b/spec/lib/iiif_manifest/v3/manifest_builder/structure_builder_spec.rb index 9f6446b..c97261d 100644 --- a/spec/lib/iiif_manifest/v3/manifest_builder/structure_builder_spec.rb +++ b/spec/lib/iiif_manifest/v3/manifest_builder/structure_builder_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::V3::ManifestBuilder::StructureBuilder do diff --git a/spec/lib/iiif_manifest/v3/manifest_factory_spec.rb b/spec/lib/iiif_manifest/v3/manifest_factory_spec.rb index 44fa90c..ad1cc5c 100644 --- a/spec/lib/iiif_manifest/v3/manifest_factory_spec.rb +++ b/spec/lib/iiif_manifest/v3/manifest_factory_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' RSpec.describe IIIFManifest::V3::ManifestFactory do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3689dda..3fd3670 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'coveralls' Coveralls.wear!