assembly-objectfile 1.10.0 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab94538c86ddec92361ad8be34b75f30d5c5c2991ddbb25e3375593e6c079b94
4
- data.tar.gz: b03077ed3ae19b4c77615ce407e600b8cacdaa190cded54e98edc5461d360af8
3
+ metadata.gz: bfe0d362cd776d4099d57530dc6c502e8760eb49953dfa93d755016b98c54d6a
4
+ data.tar.gz: c1f0da284aa258aa89375b6d7b92dd7847b3e87b27712c2802e29157b86b6d9c
5
5
  SHA512:
6
- metadata.gz: e77fd23ee31f26f9d9cd4502b760670381e5e97ade348274e52f9b70e318b4d8dd54bd45fe7529535a8912f60c822dfb616f71306f8381f6923bffa37c631993
7
- data.tar.gz: 8d92581381a3464cc0cfb44bf0e7dabd3222edf70acf477c293d79c7b1791ca5c626bf2458d1faebe05a1ef5f4606d53e1a7a1266ff18e68257dbfe1f66ddfcd
6
+ metadata.gz: dfce4baa7f4d0cd52944195661ba94b6af1010fce66d714eb7c7b54778681fd5041d92d5f2fb82561c20048f76e4c313050afd880d7eb8b0c6eafb0fd6aedb67
7
+ data.tar.gz: c936f71be1c89887f76a9e3c66a37b690730f40a4bcc01605dcd2610d961f85d44eb110b91f40754346ef46482ad481a1aa6a76a2d9e866de42782cb344115b3
@@ -2,4 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- ## Was the documentation updated?
5
+ ## How was this change tested?
6
+
7
+
8
+
9
+ ## Which documentation and/or configurations were updated?
10
+
11
+
12
+
data/.rubocop.yml CHANGED
@@ -1,6 +1,9 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
  require: rubocop-rspec
3
3
 
4
+ AllCops:
5
+ TargetRubyVersion: 2.5
6
+
4
7
  RSpec/ContextWording:
5
8
  Enabled: false # too dogmatic
6
9
 
@@ -16,11 +19,69 @@ RSpec/NestedGroups:
16
19
 
17
20
  Metrics/BlockLength:
18
21
  Exclude:
19
- - spec/**/*_spec.rb
22
+ - 'spec/**/*.rb'
23
+ - '**/*.gemspec'
24
+
25
+ Gemspec/DateAssignment: # (new in 1.10)
26
+ Enabled: true
20
27
 
21
28
  Layout/SpaceAroundMethodCallOperator:
22
29
  Enabled: true
23
30
 
31
+ Layout/EmptyLinesAroundAttributeAccessor:
32
+ Enabled: true
33
+
34
+ Layout/SpaceBeforeBrackets: # (new in 1.7)
35
+ Enabled: true
36
+
37
+ Lint/AmbiguousAssignment: # (new in 1.7)
38
+ Enabled: true
39
+
40
+ Lint/DeprecatedConstants: # (new in 1.8)
41
+ Enabled: true
42
+
43
+ Lint/DuplicateBranch: # (new in 1.3)
44
+ Enabled: true
45
+
46
+ Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
47
+ Enabled: true
48
+
49
+ Lint/EmptyBlock: # (new in 1.1)
50
+ Enabled: true
51
+
52
+ Lint/EmptyClass: # (new in 1.3)
53
+ Enabled: true
54
+
55
+ Lint/LambdaWithoutLiteralBlock: # (new in 1.8)
56
+ Enabled: true
57
+
58
+ Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
59
+ Enabled: true
60
+
61
+ Lint/NumberedParameterAssignment: # (new in 1.9)
62
+ Enabled: true
63
+
64
+ Lint/OrAssignmentToConstant: # (new in 1.9)
65
+ Enabled: true
66
+
67
+ Lint/RedundantDirGlobSort: # (new in 1.8)
68
+ Enabled: true
69
+
70
+ Lint/SymbolConversion: # (new in 1.9)
71
+ Enabled: true
72
+
73
+ Lint/ToEnumArguments: # (new in 1.1)
74
+ Enabled: true
75
+
76
+ Lint/TripleQuotes: # (new in 1.9)
77
+ Enabled: true
78
+
79
+ Lint/UnexpectedBlockArity: # (new in 1.5)
80
+ Enabled: true
81
+
82
+ Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
83
+ Enabled: true
84
+
24
85
  Lint/RaiseException:
25
86
  Enabled: true
26
87
 
@@ -38,3 +99,39 @@ Style/HashTransformKeys:
38
99
 
39
100
  Style/HashTransformValues:
40
101
  Enabled: true
102
+
103
+ Style/SlicingWithRange:
104
+ Enabled: true
105
+
106
+ Style/ArgumentsForwarding: # (new in 1.1)
107
+ Enabled: true
108
+
109
+ Style/CollectionCompact: # (new in 1.2)
110
+ Enabled: true
111
+
112
+ Style/DocumentDynamicEvalDefinition: # (new in 1.1)
113
+ Enabled: true
114
+
115
+ Style/EndlessMethod: # (new in 1.8)
116
+ Enabled: true
117
+
118
+ Style/HashConversion: # (new in 1.10)
119
+ Enabled: true
120
+
121
+ Style/HashExcept: # (new in 1.7)
122
+ Enabled: true
123
+
124
+ Style/IfWithBooleanLiteralBranches: # (new in 1.9)
125
+ Enabled: true
126
+
127
+ Style/NegatedIfElseCondition: # (new in 1.2)
128
+ Enabled: true
129
+
130
+ Style/NilLambda: # (new in 1.3)
131
+ Enabled: true
132
+
133
+ Style/RedundantArgument: # (new in 1.4)
134
+ Enabled: true
135
+
136
+ Style/SwapValues: # (new in 1.1)
137
+ Enabled: true
data/.rubocop_todo.yml CHANGED
@@ -1,54 +1,76 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-04-23 10:59:56 -0500 using RuboCop version 0.82.0.
3
+ # on 2021-01-08 23:41:37 UTC using RuboCop version 1.8.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
+ # Offense count: 1
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: EnforcedStyleAlignWith, Severity.
12
+ # SupportedStylesAlignWith: start_of_line, begin
13
+ Layout/BeginEndAlignment:
14
+ Exclude:
15
+ - 'lib/assembly-objectfile/object_fileable.rb'
16
+
17
+ # Offense count: 1
18
+ # Cop supports --auto-correct.
19
+ # Configuration parameters: AllowAliasSyntax, AllowedMethods.
20
+ # AllowedMethods: alias_method, public, protected, private
21
+ Layout/EmptyLinesAroundAttributeAccessor:
22
+ Exclude:
23
+ - 'lib/assembly-objectfile/object_fileable.rb'
24
+
25
+ # Offense count: 1
26
+ # Cop supports --auto-correct.
27
+ Layout/RescueEnsureAlignment:
28
+ Exclude:
29
+ - 'lib/assembly-objectfile/object_fileable.rb'
30
+
9
31
  # Offense count: 1
10
32
  Lint/UselessAssignment:
11
33
  Exclude:
12
34
  - 'config/boot.rb'
13
35
 
14
36
  # Offense count: 3
15
- # Configuration parameters: IgnoredMethods.
37
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
16
38
  Metrics/AbcSize:
17
- Max: 51
39
+ Max: 52
18
40
 
19
- # Offense count: 2
20
- # Configuration parameters: CountComments, ExcludedMethods.
21
- # ExcludedMethods: refine
41
+ # Offense count: 1
42
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
43
+ # IgnoredMethods: refine
22
44
  Metrics/BlockLength:
23
- Max: 27
45
+ Max: 26
24
46
 
25
47
  # Offense count: 2
26
48
  # Configuration parameters: IgnoredMethods.
27
49
  Metrics/CyclomaticComplexity:
28
- Max: 14
50
+ Max: 13
29
51
 
30
52
  # Offense count: 4
31
- # Configuration parameters: CountComments, ExcludedMethods.
53
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
32
54
  Metrics/MethodLength:
33
55
  Max: 30
34
56
 
35
57
  # Offense count: 1
36
- # Configuration parameters: CountComments.
58
+ # Configuration parameters: CountComments, CountAsOne.
37
59
  Metrics/ModuleLength:
38
60
  Max: 117
39
61
 
40
62
  # Offense count: 1
41
- # Configuration parameters: CountKeywordArgs.
63
+ # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
42
64
  Metrics/ParameterLists:
43
65
  Max: 11
44
66
 
45
67
  # Offense count: 2
46
68
  # Configuration parameters: IgnoredMethods.
47
69
  Metrics/PerceivedComplexity:
48
- Max: 12
70
+ Max: 14
49
71
 
50
72
  # Offense count: 1
51
- # Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
73
+ # Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, Regex, IgnoreExecutableScripts, AllowedAcronyms.
52
74
  # AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
53
75
  Naming/FileName:
54
76
  Exclude:
@@ -72,7 +94,8 @@ RSpec/ExampleLength:
72
94
  - 'spec/content_metadata_spec.rb'
73
95
 
74
96
  # Offense count: 2
75
- # Configuration parameters: CustomTransform, IgnoreMethods.
97
+ # Configuration parameters: Include, CustomTransform, IgnoreMethods, SpecSuffixOnly.
98
+ # Include: **/*_spec*rb*, **/spec/**/*
76
99
  RSpec/FilePath:
77
100
  Exclude:
78
101
  - 'spec/content_metadata_spec.rb'
@@ -85,7 +108,6 @@ RSpec/InstanceVariable:
85
108
  - 'spec/object_file_spec.rb'
86
109
 
87
110
  # Offense count: 38
88
- # Configuration parameters: AggregateFailuresByDefault.
89
111
  RSpec/MultipleExpectations:
90
112
  Max: 29
91
113
 
@@ -105,13 +127,36 @@ RSpec/RepeatedExampleGroupDescription:
105
127
  - 'spec/content_metadata_spec.rb'
106
128
 
107
129
  # Offense count: 2
130
+ # Cop supports --auto-correct.
108
131
  Style/CommentedKeyword:
109
132
  Exclude:
110
133
  - 'lib/assembly-objectfile/content_metadata.rb'
111
134
 
112
- # Offense count: 409
135
+ # Offense count: 2
136
+ # Cop supports --auto-correct.
137
+ Style/KeywordParametersOrder:
138
+ Exclude:
139
+ - 'lib/assembly-objectfile/content_metadata/file.rb'
140
+ - 'lib/assembly-objectfile/content_metadata/file_set.rb'
141
+
142
+ # Offense count: 1
143
+ # Cop supports --auto-correct.
144
+ Style/RedundantAssignment:
145
+ Exclude:
146
+ - 'lib/assembly-objectfile/content_metadata.rb'
147
+
148
+ # Offense count: 5
149
+ # Cop supports --auto-correct.
150
+ Style/StringConcatenation:
151
+ Exclude:
152
+ - 'config/boot.rb'
153
+ - 'lib/assembly-objectfile.rb'
154
+ - 'lib/assembly-objectfile/object_file.rb'
155
+ - 'spec/spec_helper.rb'
156
+
157
+ # Offense count: 113
113
158
  # Cop supports --auto-correct.
114
159
  # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
115
160
  # URISchemes: http, https
116
161
  Layout/LineLength:
117
- Max: 284
162
+ Max: 277
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/sul-dlss/assembly-objectfile.svg?branch=master)](https://travis-ci.org/sul-dlss/assembly-objectfile)
1
+ [![Build Status](https://travis-ci.com/sul-dlss/assembly-objectfile.svg?branch=main)](https://travis-ci.com/sul-dlss/assembly-objectfile)
2
2
  [![Test Coverage](https://api.codeclimate.com/v1/badges/2310962acce78d78e76c/test_coverage)](https://codeclimate.com/github/sul-dlss/assembly-objectfile/test_coverage)
3
3
  [![Maintainability](https://api.codeclimate.com/v1/badges/2310962acce78d78e76c/maintainability)](https://codeclimate.com/github/sul-dlss/assembly-objectfile/maintainability)
4
4
  [![Gem Version](https://badge.fury.io/rb/assembly-objectfile.svg)](https://badge.fury.io/rb/assembly-objectfile)
@@ -20,6 +20,8 @@ Gem::Specification.new do |s|
20
20
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  s.require_paths = ['lib']
22
22
 
23
+ s.required_ruby_version = '~> 2.5'
24
+
23
25
  s.add_dependency 'activesupport', '>= 5.2.0'
24
26
  s.add_dependency 'deprecation'
25
27
  s.add_dependency 'dry-struct', '~> 1.0'
@@ -33,5 +35,5 @@ Gem::Specification.new do |s|
33
35
  s.add_development_dependency 'rspec', '~> 3.0'
34
36
  s.add_development_dependency 'rubocop'
35
37
  s.add_development_dependency 'rubocop-rspec'
36
- s.add_development_dependency 'simplecov'
38
+ s.add_development_dependency 'simplecov', '~> 0.17.0' # CodeClimate cannot use SimpleCov >= 0.18.0 for generating test coverage
37
39
  end
data/config/boot.rb CHANGED
@@ -3,9 +3,9 @@
3
3
  require 'rubygems'
4
4
 
5
5
  environment = ENV['ENVIRONMENT'] ||= 'development'
6
- project_root = File.expand_path(File.dirname(__FILE__) + '/..')
6
+ project_root = File.expand_path("#{File.dirname(__FILE__)}/..")
7
7
 
8
8
  # Load config for current environment.
9
- $LOAD_PATH.unshift(project_root + '/lib')
9
+ $LOAD_PATH.unshift("#{project_root}/lib")
10
10
 
11
11
  require 'assembly-objectfile'
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Assembly
4
4
  # the path to the gem, used to access profiles stored with the gem
5
- PATH_TO_GEM = File.expand_path(File.dirname(__FILE__) + '/..')
5
+ PATH_TO_GEM = File.expand_path("#{File.dirname(__FILE__)}/..")
6
6
 
7
7
  # if input image is not one of these mime types, it will not be regarded as a valid image for the purpose of generating a JP2 derivative
8
8
  VALID_IMAGE_MIMETYPES = ['image/jpeg', 'image/tiff', 'image/tif', 'image/png'].freeze
@@ -14,7 +14,7 @@ module Assembly
14
14
  # these are used when :bundle=>:dpg only
15
15
 
16
16
  DEPRECATED_STYLES = %i[book_with_pdf book_as_image].freeze
17
- VALID_STYLES = %i[simple_image simple_book file map document 3d].freeze
17
+ VALID_STYLES = %i[simple_image simple_book file map document 3d webarchive-seed].freeze
18
18
 
19
19
  # This class generates content metadata for image files
20
20
  class ContentMetadata
@@ -34,6 +34,7 @@ module Assembly
34
34
  # :book_as_image, as simple_book, but with contentMetadata type="book", resource type="image" (same rule applies for resources with non images) - NOTE: THIS IS DEPRECATED
35
35
  # :map, like simple_image, but with contentMetadata type="map", resource type="image"
36
36
  # :3d, contentMetadata type="3d", ".obj" and other configured 3d extension files go into resource_type="3d", everything else into resource_type="file"
37
+ # :webarchive-seed, contentMetadata type="webarchive-seed", resource type="image"
37
38
  # :bundle = optional - a symbol containing the method of bundling files into resources, allowed values are
38
39
  # :default = all files get their own resources (default)
39
40
  # :filename = files with the same filename but different extensions get bundled together in a single resource
@@ -74,13 +75,11 @@ module Assembly
74
75
  common_path: common_path,
75
76
  config: config)
76
77
 
77
- result = if include_root_xml == false
78
- builder.doc.root.to_xml
79
- else
80
- builder.to_xml
81
- end
82
-
83
- result
78
+ if include_root_xml == false
79
+ builder.doc.root.to_xml
80
+ else
81
+ builder.to_xml
82
+ end
84
83
  end
85
84
 
86
85
  def self.special_dpg_folder?(folder)
@@ -12,7 +12,7 @@ module Assembly
12
12
 
13
13
  # Represents a configuration for generating the content metadata
14
14
  class Config < Dry::Struct
15
- STYLES = %w[image file book map 3d document].freeze
15
+ STYLES = %w[image file book map 3d document webarchive-seed].freeze
16
16
  attribute :auto_labels, Types::Strict::Bool.default(true)
17
17
  attribute :flatten_folder_structure, Types::Strict::Bool.default(false)
18
18
  attribute :add_file_attributes, Types::Strict::Bool.default(false)
@@ -29,7 +29,7 @@ module Assembly
29
29
  # @param [Symbol] bundle
30
30
  # @param [Assembly::ObjectFile] file
31
31
  # @param style
32
- def initialize(bundle: nil, file:, style: nil)
32
+ def initialize(file:, bundle: nil, style: nil)
33
33
  @bundle = bundle
34
34
  @file = file
35
35
  @style = style
@@ -9,7 +9,7 @@ module Assembly
9
9
  # @param [Boolean] dpg (false) is it a dpg bundle?
10
10
  # @param [Array<Assembly::ObjectFile>] resource_files
11
11
  # @param style
12
- def initialize(dpg: false, resource_files:, style:)
12
+ def initialize(resource_files:, style:, dpg: false)
13
13
  @dpg = dpg
14
14
  @resource_files = resource_files
15
15
  @style = style
@@ -46,7 +46,7 @@ module Assembly
46
46
  resource_has_non_images = !(resource_file_types - [:image]).empty?
47
47
 
48
48
  case style
49
- when :simple_image
49
+ when :simple_image, :map, :'webarchive-seed'
50
50
  'image'
51
51
  when :file
52
52
  'file'
@@ -56,8 +56,6 @@ module Assembly
56
56
  resource_has_non_images && resource_file_types.include?(:image) == false ? 'object' : 'image'
57
57
  when :book_with_pdf # in book with PDF type, if we find a resource with *any* non images, switch it's type from book to object
58
58
  resource_has_non_images ? 'object' : 'page'
59
- when :map
60
- 'image'
61
59
  when :document
62
60
  'document'
63
61
  when :'3d'
@@ -19,10 +19,10 @@ module Assembly
19
19
  x = strings.last
20
20
  n += 1 while strings.all? { |s| s[n] && (s[n] == x[n]) }
21
21
  common_prefix = x[0...n]
22
- if common_prefix[-1, 1] != '/' # check if last element of the common string is the end of a directory
23
- common_prefix.split('/')[0..-2].join('/') + '/' # if not, split string along directories, and reject last one
22
+ if common_prefix[-1, 1] == '/' # check if last element of the common string is the end of a directory
23
+ common_prefix # if not, split string along directories, and reject last one
24
24
  else
25
- common_prefix # if it was, then return the common prefix directly
25
+ "#{common_prefix.split('/')[0..-2].join('/')}/" # if it was, then return the common prefix directly
26
26
  end
27
27
  end
28
28
  end
@@ -7,6 +7,7 @@ module Assembly
7
7
  # Common behaviors we need for other classes in the gem
8
8
  module ObjectFileable
9
9
  attr_accessor :file_attributes, :label, :path, :provider_md5, :provider_sha1, :relative_path, :mime_type_order
10
+
10
11
  VALID_MIMETYPE_METHODS = %i[exif file extension].freeze
11
12
 
12
13
  # @param [String] path full path to the file to be worked with
@@ -87,11 +88,11 @@ module Assembly
87
88
  # puts source_file.exif # hash with exif information
88
89
  def exif
89
90
  @exif ||= begin
90
- check_for_file
91
- MiniExiftool.new(path, replace_invalid_chars: '?')
92
- rescue StandardError
93
- nil
94
- end
91
+ check_for_file
92
+ MiniExiftool.new(path, replace_invalid_chars: '?')
93
+ rescue StandardError
94
+ nil
95
+ end
95
96
  end
96
97
 
97
98
  # Computes md5 checksum or returns cached value
@@ -208,7 +209,7 @@ exif&.mimetype && prefer_exif
208
209
  def valid_image?
209
210
  return false unless image?
210
211
 
211
- mimetype == 'image/jp2' || jp2able? ? true : false
212
+ mimetype == 'image/jp2' || jp2able?
212
213
  end
213
214
 
214
215
  # @return [Boolean] true if image has a color profile, false if not.