image_optim 0.26.2 → 0.27.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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.appveyor.yml +9 -2
  3. data/.rubocop.yml +38 -10
  4. data/.travis.yml +19 -15
  5. data/CHANGELOG.markdown +21 -0
  6. data/Gemfile +3 -1
  7. data/LICENSE.txt +1 -1
  8. data/README.markdown +9 -3
  9. data/Vagrantfile +2 -0
  10. data/bin/image_optim +1 -0
  11. data/image_optim.gemspec +5 -7
  12. data/lib/image_optim.rb +5 -0
  13. data/lib/image_optim/bin_resolver.rb +5 -0
  14. data/lib/image_optim/bin_resolver/bin.rb +45 -19
  15. data/lib/image_optim/bin_resolver/comparable_condition.rb +3 -0
  16. data/lib/image_optim/bin_resolver/error.rb +2 -0
  17. data/lib/image_optim/bin_resolver/simple_version.rb +2 -0
  18. data/lib/image_optim/cache.rb +3 -0
  19. data/lib/image_optim/cache_path.rb +21 -2
  20. data/lib/image_optim/cmd.rb +2 -0
  21. data/lib/image_optim/config.rb +7 -1
  22. data/lib/image_optim/configuration_error.rb +2 -0
  23. data/lib/image_optim/handler.rb +4 -0
  24. data/lib/image_optim/hash_helpers.rb +2 -0
  25. data/lib/image_optim/image_meta.rb +2 -0
  26. data/lib/image_optim/non_negative_integer_range.rb +2 -0
  27. data/lib/image_optim/optimized_path.rb +3 -1
  28. data/lib/image_optim/option_definition.rb +2 -0
  29. data/lib/image_optim/option_helpers.rb +2 -0
  30. data/lib/image_optim/path.rb +30 -5
  31. data/lib/image_optim/runner.rb +3 -0
  32. data/lib/image_optim/runner/glob_helpers.rb +3 -1
  33. data/lib/image_optim/runner/option_parser.rb +4 -2
  34. data/lib/image_optim/space.rb +3 -1
  35. data/lib/image_optim/true_false_nil.rb +2 -0
  36. data/lib/image_optim/worker.rb +5 -0
  37. data/lib/image_optim/worker/advpng.rb +2 -0
  38. data/lib/image_optim/worker/class_methods.rb +5 -0
  39. data/lib/image_optim/worker/gifsicle.rb +2 -0
  40. data/lib/image_optim/worker/jhead.rb +4 -1
  41. data/lib/image_optim/worker/jpegoptim.rb +2 -0
  42. data/lib/image_optim/worker/jpegrecompress.rb +2 -0
  43. data/lib/image_optim/worker/jpegtran.rb +2 -0
  44. data/lib/image_optim/worker/optipng.rb +4 -2
  45. data/lib/image_optim/worker/pngcrush.rb +4 -2
  46. data/lib/image_optim/worker/pngout.rb +3 -0
  47. data/lib/image_optim/worker/pngquant.rb +2 -0
  48. data/lib/image_optim/worker/svgo.rb +2 -0
  49. data/script/update_worker_options_in_readme +3 -2
  50. data/script/worker_analysis +13 -3
  51. data/spec/image_optim/bin_resolver/comparable_condition_spec.rb +2 -0
  52. data/spec/image_optim/bin_resolver/simple_version_spec.rb +2 -0
  53. data/spec/image_optim/bin_resolver_spec.rb +4 -2
  54. data/spec/image_optim/cache_path_spec.rb +71 -26
  55. data/spec/image_optim/cache_spec.rb +4 -0
  56. data/spec/image_optim/cmd_spec.rb +2 -0
  57. data/spec/image_optim/config_spec.rb +2 -0
  58. data/spec/image_optim/handler_spec.rb +2 -0
  59. data/spec/image_optim/hash_helpers_spec.rb +2 -0
  60. data/spec/image_optim/image_meta_spec.rb +2 -0
  61. data/spec/image_optim/optimized_path_spec.rb +2 -0
  62. data/spec/image_optim/option_definition_spec.rb +2 -0
  63. data/spec/image_optim/option_helpers_spec.rb +2 -0
  64. data/spec/image_optim/path_spec.rb +65 -24
  65. data/spec/image_optim/runner/glob_helpers_spec.rb +2 -0
  66. data/spec/image_optim/runner/option_parser_spec.rb +2 -0
  67. data/spec/image_optim/space_spec.rb +13 -11
  68. data/spec/image_optim/worker/optipng_spec.rb +2 -0
  69. data/spec/image_optim/worker/pngquant_spec.rb +2 -0
  70. data/spec/image_optim/worker_spec.rb +2 -0
  71. data/spec/image_optim_spec.rb +7 -4
  72. data/spec/images/invisiblepixels/generate +1 -0
  73. data/spec/images/quant/generate +3 -2
  74. data/spec/spec_helper.rb +3 -0
  75. metadata +18 -13
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'image_optim/runner/glob_helpers'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'image_optim/runner/option_parser'
3
5
 
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'image_optim/space'
3
5
 
4
6
  describe ImageOptim::Space do
5
7
  describe '.space' do
6
8
  {
7
- 0 => ' ',
8
- 1 => ' 1B',
9
- 10 => ' 10B',
10
- 100 => ' 100B',
11
- 1_000 => ' 1000B',
12
- 10_000 => ' 9.8K',
13
- 100_000 => ' 97.7K',
14
- 1_000_000 => '976.6K',
15
- 10_000_000 => ' 9.5M',
16
- 100_000_000 => ' 95.4M',
17
- }.each do |size, space|
9
+ ' ' => 0,
10
+ ' 1B' => 1,
11
+ ' 10B' => 10,
12
+ ' 100B' => 100,
13
+ ' 1000B' => 1_000,
14
+ ' 9.8K' => 10_000,
15
+ ' 97.7K' => 100_000,
16
+ '976.6K' => 1_000_000,
17
+ ' 9.5M' => 10_000_000,
18
+ ' 95.4M' => 100_000_000,
19
+ }.each do |space, size|
18
20
  it "converts #{size} to #{space}" do
19
21
  expect(described_class.space(size)).to eq(space)
20
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'image_optim/worker/optipng'
3
5
  require 'image_optim/path'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'image_optim/worker/pngquant'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'image_optim/worker'
3
5
  require 'image_optim/bin_resolver'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'image_optim'
3
5
  require 'image_optim/cmd'
@@ -21,10 +23,11 @@ describe ImageOptim do
21
23
  stub_const('Cmd', ImageOptim::Cmd)
22
24
  end
23
25
 
24
- isolated_options_base = {:skip_missing_workers => false}
25
- ImageOptim::Worker.klasses.each do |klass|
26
- isolated_options_base[klass.bin_sym] = false
27
- end
26
+ isolated_options_base = Hash[
27
+ ImageOptim::Worker.klasses.map do |klass|
28
+ [klass.bin_sym, false]
29
+ end
30
+ ].merge(:skip_missing_workers => false)
28
31
 
29
32
  ImageOptim::Worker.klasses.each do |worker_klass|
30
33
  describe "#{worker_klass.bin_sym} worker" do
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  Dir.chdir(File.dirname(__FILE__))
4
5
 
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  Dir.chdir(File.dirname(__FILE__))
4
5
 
@@ -16,8 +17,8 @@ palettes.each do |palette|
16
17
  rgb:-
17
18
  PNG24:#{palette}.png
18
19
  ].shelljoin, 'w') do |f|
19
- (side * side).times do |i|
20
- color = i * palette / (side * side) * 0x10000 / palette
20
+ (side**2).times do |i|
21
+ color = i * palette / (side**2) * 0x10000 / palette
21
22
  f << [color / 0x100, color % 0x100, 0].pack('C*')
22
23
  end
23
24
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if ENV['CODECLIMATE']
2
4
  require 'simplecov'
3
5
  SimpleCov.start
@@ -53,6 +55,7 @@ def mepp(image_a, image_b)
53
55
  unless [0, 1].include?($CHILD_STATUS.exitstatus)
54
56
  fail "compare #{image_a} with #{image_b} failed with `#{output}`"
55
57
  end
58
+
56
59
  num_r = '\d+(?:\.\d+(?:[eE][-+]?\d+)?)?'
57
60
  output[/\((#{num_r}), #{num_r}\)/, 1].to_f
58
61
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_optim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.2
4
+ version: 0.27.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Kuchin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-15 00:00:00.000000000 Z
11
+ date: 2020-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fspath
@@ -138,16 +138,22 @@ dependencies:
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: '0.58'
141
+ version: '0.59'
142
+ - - "!="
143
+ - !ruby/object:Gem::Version
144
+ version: 0.78.0
142
145
  type: :development
143
146
  prerelease: false
144
147
  version_requirements: !ruby/object:Gem::Requirement
145
148
  requirements:
146
149
  - - "~>"
147
150
  - !ruby/object:Gem::Version
148
- version: '0.58'
149
- description:
150
- email:
151
+ version: '0.59'
152
+ - - "!="
153
+ - !ruby/object:Gem::Version
154
+ version: 0.78.0
155
+ description:
156
+ email:
151
157
  executables:
152
158
  - image_optim
153
159
  extensions: []
@@ -257,13 +263,13 @@ files:
257
263
  - spec/spec_helper.rb
258
264
  - vendor/jpegrescan
259
265
  - vendor/jpegrescan.bat
260
- homepage: http://github.com/toy/image_optim
266
+ homepage: https://github.com/toy/image_optim
261
267
  licenses:
262
268
  - MIT
263
269
  metadata:
264
270
  bug_tracker_uri: https://github.com/toy/image_optim/issues
265
- changelog_uri: https://github.com/toy/image_optim/CHANGELOG.markdown
266
- documentation_uri: https://www.rubydoc.info/gems/image_optim/0.26.2
271
+ changelog_uri: https://github.com/toy/image_optim/blob/master/CHANGELOG.markdown
272
+ documentation_uri: https://www.rubydoc.info/gems/image_optim/0.27.1
267
273
  source_code_uri: https://github.com/toy/image_optim
268
274
  post_install_message: |
269
275
  Rails image assets optimization is extracted into image_optim_rails gem
@@ -282,9 +288,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
288
  - !ruby/object:Gem::Version
283
289
  version: '0'
284
290
  requirements: []
285
- rubyforge_project: image_optim
286
- rubygems_version: 2.7.7
287
- signing_key:
291
+ rubygems_version: 3.1.4
292
+ signing_key:
288
293
  specification_version: 4
289
294
  summary: Command line tool and ruby interface to optimize (lossless compress, optionally
290
295
  lossy) jpeg, png, gif and svg images using external utilities (advpng, gifsicle,