image_optimizer 1.7.0 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ad635514a39378a2f01e3dd15515cf9433b341bd
4
- data.tar.gz: 3612dc1b7da6cd2e19603f5c82c8a8e259ccd0a9
2
+ SHA256:
3
+ metadata.gz: 52ece0fb51c602d22fb7c82b8c14a1a47ad2972d6e925226994b8c656484e6cb
4
+ data.tar.gz: 368aca1eb6b81221e1d130ca0d10490eab127a00a3b991bac4d2fc3bc75d32b7
5
5
  SHA512:
6
- metadata.gz: 59de349a631136309aa0d97942c49ffb76ca39c249187e91850dd949471c23a16bd85b3e4fef1c0c6ada72f442f01d86c58ce6b75efc68449f83a8dcb5cc4027
7
- data.tar.gz: 16d02acc88a30773dbed18dc3f7594faa26004dbc8bcfb9491237fd9b737cc8b73efd427f26b482e4518e8c56e710a676384a7fbf30c9cf4a8315416e6db07b6
6
+ metadata.gz: 6022872379386db2a408e448a87f1679c2aef82ec40485791da1128cfdac177ea2558c70c12f27537e45c5bb53e94ba067cd99aa4a5f993a6a1782ed6707fd9f
7
+ data.tar.gz: 9683e4dc3de5849e0240ae0d81c0791cfb466ee5e1e40fc9c748b28789b71b22c3445e8d5c0129810064c212f1c148e77769546787a49ccd6c79c4964e54d728
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ ## [1.9.0](https://github.com/jtescher/image_optimizer/releases/tag/v1.9.0) 2022-01-10
2
+ * add ignore option for compression methods (#23)
3
+
4
+ ## [1.8.0](https://github.com/jtescher/image_optimizer/releases/tag/v1.8.0) 2018-07-30
5
+ * Fix: space in file name will break PNGQuantOptimizer - https://github.com/jtescher/image_optimizer/pull/21
6
+
7
+ ## [1.7.2](https://github.com/jtescher/image_optimizer/releases/tag/v1.7.2) 2018-01-10
8
+ * Added quiet option support for pngquant optimizer - https://github.com/jtescher/image_optimizer/pull/19
9
+
10
+ ## [1.7.1](https://github.com/jtescher/image_optimizer/releases/tag/v1.7.1) 2017-11-29
11
+ * Fix PNGQuantOptimizer `Unrecognised option` error - https://github.com/jtescher/image_optimizer/issues/17
data/README.md CHANGED
@@ -4,14 +4,10 @@ This gem allows you to simply optimize images via jpegoptim or OptiPNG.
4
4
 
5
5
  Tested against ruby 2.0.x, 2.1.x, 2.2.x, 2.3.x, and ruby-head
6
6
 
7
- [![Build Status](https://secure.travis-ci.org/jtescher/image_optimizer.png)]
8
- (http://travis-ci.org/jtescher/image_optimizer)
9
- [![Dependency Status](https://gemnasium.com/jtescher/image_optimizer.png)]
10
- (https://gemnasium.com/jtescher/image_optimizer)
11
- [![Code Climate](https://codeclimate.com/github/jtescher/image_optimizer.png)]
12
- (https://codeclimate.com/github/jtescher/image_optimizer)
13
- [![Coverage Status](https://coveralls.io/repos/jtescher/image_optimizer/badge.png)]
14
- (https://coveralls.io/r/jtescher/image_optimizer)
7
+ [![Build Status](https://secure.travis-ci.org/jtescher/image_optimizer.png)](http://travis-ci.org/jtescher/image_optimizer)
8
+ [![Dependency Status](https://gemnasium.com/jtescher/image_optimizer.png)](https://gemnasium.com/jtescher/image_optimizer)
9
+ [![Maintainability](https://api.codeclimate.com/v1/badges/31aa4c1b98a4c31433a3/maintainability)](https://codeclimate.com/github/jtescher/image_optimizer/maintainability)
10
+ [![Coverage Status](https://coveralls.io/repos/jtescher/image_optimizer/badge.png)](https://coveralls.io/r/jtescher/image_optimizer)
15
11
  [![Gem Version](https://badge.fury.io/rb/image_optimizer.png)](http://badge.fury.io/rb/image_optimizer)
16
12
 
17
13
  ## Installation
@@ -24,7 +20,7 @@ Tested against ruby 2.0.x, 2.1.x, 2.2.x, 2.3.x, and ruby-head
24
20
 
25
21
  3. Gifsicle, which can be installed from [www.lcdf.org/gifsicle/](https://www.lcdf.org/gifsicle/)
26
22
 
27
- 4. Pngquant, which can be installed from [pngquant.org]https://pngquant.org/
23
+ 4. Pngquant, which can be installed from [pngquant.org](https://pngquant.org/)
28
24
 
29
25
  Or install the utilities via homebrew:
30
26
 
@@ -40,7 +36,7 @@ And then execute:
40
36
 
41
37
  ```bash
42
38
  $ bundle
43
- ```
39
+ ```
44
40
 
45
41
  Or install it yourself as:
46
42
  ```bash
@@ -62,7 +58,7 @@ Pngquant is a command-line utility and a library for lossy compression of PNG im
62
58
  The conversion reduces file sizes significantly (often as much as 70%) and preserves full alpha transparency. Generated images are compatible with all modern web browsers, and have better fallback in IE6 than 24-bit PNGs.
63
59
 
64
60
  ```ruby
65
- PNGQuantOptimizer.new('path/to/file.png').optimize
61
+ ImageOptimizer::PNGQuantOptimizer.new('path/to/file.png').optimize
66
62
  ```
67
63
 
68
64
  #### Optimize JPEG formats:
@@ -93,6 +89,12 @@ Default is false.
93
89
  ImageOptimizer.new('path/to/file.jpg', quiet: true).optimize
94
90
  ```
95
91
 
92
+ You can also enable quiet mode globally:
93
+
94
+ ```ruby
95
+ ImageOptimizer.quiet = true
96
+ ```
97
+
96
98
  ##### Lossy JPEG optimization
97
99
 
98
100
  Pass an optional `quality` parameter to target a specific lossy JPG quality level (0-100), default is lossless
@@ -153,6 +155,14 @@ instead of the filename extension, default is false.
153
155
  ImageOptimizer.new('path/to/file.jpg', identify: true).optimize
154
156
  ```
155
157
 
158
+ ##### Ignore compression methods
159
+
160
+ You can ignore optimization methods by passing an optional `ignore` parameter with the method name(s). For example, to compress a png ignoring the lossless compression method `optipng`:
161
+
162
+ ```ruby
163
+ ImageOptimizer.new('path/to/file.png', ignore: :optipng).optimize
164
+ ```
165
+
156
166
  ## Set bin directories
157
167
 
158
168
  Optionally set binary directories with the `OPTIPNG_BIN`, `JPEGOPTIM_BIN` and `IDENTIFY_BIN` environment variables.
data/certs/jtescher.pem CHANGED
@@ -1,21 +1,25 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDdDCCAlygAwIBAgIBATANBgkqhkiG9w0BAQUFADBAMRIwEAYDVQQDDAlqYXRl
3
- c2NoZXIxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
4
- bTAeFw0xNjA5MjYxNzU4NTRaFw0xNzA5MjYxNzU4NTRaMEAxEjAQBgNVBAMMCWph
5
- dGVzY2hlcjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYD
6
- Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7ptCQvN739Rjos4e
7
- G2Y8uGCQxpBoXozU36PXLtR5ws7aly1QV0zRc1cy7nKnOSnXn7dEfbLGZS6/87pM
8
- rDFFszHsn/dizlXe3wejHePyG1EsYnIezISP9YSDcm7qpysrUAa2fKPqqZ6DNbIP
9
- 6wRF9Cun4hvmQPDrs0zKU6p43XHnJUg7YBYCOVACa7eFD1EOya+599hFMhnWChvT
10
- rKkVc/JRvmKYLIkB6Y6N3TFrVi9x0Qpo4fjG5rQ9xxNZhpFIOMJ0VJbuRSIMlLwr
11
- Ryd/QG0BcvkSHph/ZDlgfZ1V/lzWWq+mZOt/U+t6cVITSET5XDzHkeZ0BodGyAMr
12
- lZpggQIDAQABo3kwdzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
13
- QLcGxzEu2F2XI+3tIWSu8KqAFrkwHgYDVR0RBBcwFYETamF0ZXNjaGVyQGdtYWls
14
- LmNvbTAeBgNVHRIEFzAVgRNqYXRlc2NoZXJAZ21haWwuY29tMA0GCSqGSIb3DQEB
15
- BQUAA4IBAQCh9hDqN3lZw0PLVkXVcnwnl3KAjJfwCwk1okeuJ+IeQSfRLPp2ECLn
16
- j87oXZPcBukPB0/zTHcF/eBPIGvOedqVhp9SEar51dXLdiCe+deXx/bI3YMRdTGH
17
- 6NtqR6hWjm+hzBthxDsKhmQRczJ+5FNzAoW+pzf7ouKGfeFiFPwvAMolzsi2T+O/
18
- AmsZcBYVI8HbrnuoQI30XfdhNoRrKhoMyzAyVdWX9xQW56TWUO+o8iXBKjOxX2C5
19
- 8lVFrLvGNGPCLQmEf498hBYT99EVYiuiI0F7YlTmBdzL1uwTMk5le/b0NguYdSJ7
20
- qKlUP9usSwMVc+qmaOg1EYfPGYvt63qS
2
+ MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdqdWxp
3
+ YW4vREM9dGVzY2hlci9EQz1tZTAeFw0yMjAxMTAxNTMyMzFaFw0yMzAxMTAxNTMy
4
+ MzFaMCIxIDAeBgNVBAMMF2p1bGlhbi9EQz10ZXNjaGVyL0RDPW1lMIIBojANBgkq
5
+ hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2NIqnCAvdqMziQRxhBrjOOEy/bpjVakN
6
+ 4SY7DxGzx2C7nSTmIS8KDNVJMJJu+1SjsrE7zZR4YGXsn5EWC9byjUlEbIr+bcYX
7
+ Kqez1qWEAF5bAHCi2aIQV7DL6EjhuuhHszK921VK52m9/kfLzCGojM+dQGhxsS9R
8
+ uK8NMZvOnBprEblr58iD9b7wp7Nw8zl3HeYi7QEhFL9wQcIQTtACiRxim+0N0XXK
9
+ W9Fwk3gB8UaiWEwNdaZJ360+YubO1Q+9/6XnItDl8rvyyzkkPk8qTbqBxo+9qExk
10
+ dQkaJM2a4u0KBbdpMzSH05lcaHsitvaj9v3OXgXcX1JCJ8PfvjMkRVOj6p490Wv5
11
+ jgtJ8WsaJuJ0Z8AZK5LdD0DJPEH2ne54IKULsg0+G+kc7TGApxkQ9guJ3DYFMCww
12
+ NvTZhT5wdoKYi2EmWIMick8NiVWU8JHolHAjWHAMnnzLu1MeQEQdNIcU7+q4Vsti
13
+ qNQDKfsF14EBoUrdVQw7GhM0YsDflP9vAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
14
+ VR0PBAQDAgSwMB0GA1UdDgQWBBSjYnqpiURz0CR8srSqAJbZhlIx3TAcBgNVHREE
15
+ FTATgRFqdWxpYW5AdGVzY2hlci5tZTAcBgNVHRIEFTATgRFqdWxpYW5AdGVzY2hl
16
+ ci5tZTANBgkqhkiG9w0BAQsFAAOCAYEANc6i+QIto8zFj+y2rHpz197Dg8nYtHnr
17
+ LjEeNCm3JPyTZNDXbs/W+GArMiukQ3GkIdDgx+e+Q3h8FMdO5L5ObRNeGmBDyEyG
18
+ M8ubpHxacemSZkfmVyNkDBWOFYQYMJaC2TgmnUnRe5IAuOuWRgvC4kvb1blTsqbP
19
+ jNDn4Z2FofVroUQsPD8lVw27cUsoA2SmFnS+8ThqVsn/CIEoLkIkOWElAaKqa4z9
20
+ xU/u+8Mi2o2ndq1k5/WvYn2AAEm+DjJ5jPkSeepYdlNe2ogEeGcWEFmyDJfr0vK3
21
+ VokEpOHGpz1/CiJnJ08xTGCLOZ13dtclzhILRsP7tTh8+c9XB4SkmuX37dazBUu0
22
+ pdTkZA65Y5/zNsW4BLHc8h6TyXqpmv6giWKOm6gHdWVrhuVM9GGR4gIJyI5UFISg
23
+ HgI9vJ9QNRAdHzkP6ToW7r3j6nuszBAcnvJHU+MnONH9mGe7EWado06XjFAgrcA/
24
+ 47H47vSiiTIz55uAos1d8U8682yHT1SQ
21
25
  -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ dc5be3d00db746d52012b8f61e8c7cc546538180fbbd043bee18e466dccb5454c2e7675d37f2db91ba3db7b513dc7f5a33ed9953c182b5d22035031ed1bc99f2
@@ -0,0 +1 @@
1
+ 309cf3bfe33c8afccbac2b99ad23dd124ff6230f66a23aec444f22494f3726b3e22fad4656cf72984ed029f1149e4dbfcbdec203b143d259959f41b4825310ae
@@ -0,0 +1 @@
1
+ a060c2b8101654118102bbced353085a17155363cd283bf2365f8ade16fa621b83076a06cf1c0635c44ce8ef465fad4a675bcebae616cb86b83e871db67e6e44
@@ -0,0 +1 @@
1
+ 848760a4bcbf80d14abfa5ac4c752e8f8bc9019bff3f6f3240fbed4ac8c899bac1720a6bbd13bdba021adf5641d6e9e1d17c67d7d472a82ee0d9d85e8bcea22d
@@ -9,6 +9,7 @@ class ImageOptimizer
9
9
  end
10
10
 
11
11
  def optimize
12
+ return if ignore?
12
13
  return unless correct_format?
13
14
 
14
15
  if optimizer_bin?
@@ -40,5 +41,16 @@ class ImageOptimizer
40
41
  ENV["#{bin_name.upcase}_BIN"] || which(bin_name)
41
42
  end
42
43
 
44
+ def quiet?
45
+ options[:quiet] || ImageOptimizer.quiet
46
+ end
47
+
48
+ def ignore?
49
+ ignore.include? bin_name
50
+ end
51
+
52
+ def ignore
53
+ options[:ignore] ? [options[:ignore]].flatten.map(&:to_s) : []
54
+ end
43
55
  end
44
56
  end
@@ -6,7 +6,7 @@ class ImageOptimizer
6
6
  def command_options
7
7
  flags = ['-f', '--strip-all', '--all-progressive']
8
8
  flags << max_quantity if (0..100).include?(options[:quality])
9
- flags << quiet if options[:quiet]
9
+ flags << quiet if quiet?
10
10
  flags << path
11
11
  end
12
12
 
@@ -6,7 +6,7 @@ class ImageOptimizer
6
6
  def command_options
7
7
  flags = %W[-o#{level}]
8
8
  flags << strip_metadata if strip_metadata?
9
- flags << quiet if options[:quiet]
9
+ flags << quiet if quiet?
10
10
  flags << path
11
11
  end
12
12
 
@@ -4,15 +4,17 @@ class ImageOptimizer
4
4
  private
5
5
 
6
6
  def command_options
7
- flags = ['--skip-if-larger', '--speed 1',
8
- '--force', '--verbose', '--ext .png']
9
- flags << quantity
7
+ flags = ['--skip-if-larger', '--speed=1',
8
+ '--force', '--verbose', '--ext=.png']
9
+
10
+ flags -= ['--verbose'] if quiet?
11
+ flags << quality
10
12
  flags << path
11
13
  end
12
14
 
13
- def quantity
14
- return "--quality 100" unless (0..100).include?(options[:quality])
15
- "--quality #{options[:quality]}"
15
+ def quality
16
+ return "--quality=100" unless (0..100).include?(options[:quality])
17
+ "--quality=#{options[:quality]}"
16
18
  end
17
19
 
18
20
  def extensions
@@ -1,3 +1,3 @@
1
1
  class ImageOptimizer
2
- VERSION = '1.7.0'
2
+ VERSION = '1.9.0'
3
3
  end
@@ -9,6 +9,15 @@ require 'image_optimizer/pngquant_optimizer'
9
9
  class ImageOptimizer
10
10
  include Shell
11
11
 
12
+ # Allow the +quiet+ flag to be set globally.
13
+ @@quiet = false
14
+ def self.quiet
15
+ @@quiet
16
+ end
17
+ def self.quiet=(value)
18
+ @@quiet = value
19
+ end
20
+
12
21
  attr_reader :path, :options
13
22
  def initialize(path, options = {})
14
23
  @path = path
@@ -46,6 +46,14 @@ describe ImageOptimizer::GIFOptimizer do
46
46
  subject
47
47
  end
48
48
  end
49
+
50
+ context 'with ignore parameter' do
51
+ let(:options) { { :ignore => :gifsicle } }
52
+ it 'does not optimize the gif' do
53
+ expect(gif_optimizer).not_to receive(:system)
54
+ subject
55
+ end
56
+ end
49
57
  end
50
58
 
51
59
 
@@ -53,6 +53,25 @@ describe ImageOptimizer::JPEGOptimizer do
53
53
  subject
54
54
  end
55
55
  end
56
+
57
+ context 'with global quiet mode enabled' do
58
+ before { ImageOptimizer.quiet = true }
59
+ after { ImageOptimizer.quiet = false }
60
+
61
+ it 'sets quiet parameter on the command line' do
62
+ optimizer_options = %w[-f --strip-all --all-progressive --quiet /path/to/file.jpg]
63
+ expect(jpeg_optimizer).to receive(:system).with('/usr/local/bin/jpegoptim', *optimizer_options)
64
+ subject
65
+ end
66
+ end
67
+
68
+ context 'with ignore parameter' do
69
+ let(:options) { { :ignore => :jpegoptim } }
70
+ it 'does not optimize the jpeg' do
71
+ expect(jpeg_optimizer).not_to receive(:system)
72
+ subject
73
+ end
74
+ end
56
75
  end
57
76
 
58
77
  context 'optimizing utility is not installed' do
@@ -66,4 +85,4 @@ describe ImageOptimizer::JPEGOptimizer do
66
85
  end
67
86
  end
68
87
  end
69
- end
88
+ end
@@ -40,6 +40,16 @@ describe ImageOptimizer::PNGOptimizer do
40
40
  end
41
41
  end
42
42
 
43
+ context 'with global quiet mode enabled' do
44
+ before { ImageOptimizer.quiet = true }
45
+ after { ImageOptimizer.quiet = false }
46
+
47
+ it 'sets quiet parameter on the command line' do
48
+ expect(png_optimizer).to receive(:system).with('/usr/local/bin/optipng', '-o7', '-strip all', '-quiet', '/path/to/file.png')
49
+ subject
50
+ end
51
+ end
52
+
43
53
  context 'without optimization parameter' do
44
54
  it 'optimizes the png with level 7 optimization' do
45
55
  expect(png_optimizer).to receive(:system).with('/usr/local/bin/optipng', '-o7', '-strip all', '/path/to/file.png')
@@ -62,6 +72,14 @@ describe ImageOptimizer::PNGOptimizer do
62
72
  subject
63
73
  end
64
74
  end
75
+
76
+ context 'with ignore parameter' do
77
+ let(:options) { { :ignore => :optipng } }
78
+ it 'does not optimize the png' do
79
+ expect(png_optimizer).not_to receive(:system)
80
+ subject
81
+ end
82
+ end
65
83
  end
66
84
 
67
85
 
@@ -3,7 +3,8 @@ require 'spec_helper'
3
3
  describe ImageOptimizer::PNGQuantOptimizer do
4
4
  describe '#optimize' do
5
5
  let(:options) { {} }
6
- let(:pngquant_optimizer) { ImageOptimizer::PNGQuantOptimizer.new('/path/to/file.png', options) }
6
+ let(:path) { '/path/to/file.png' }
7
+ let(:pngquant_optimizer) { ImageOptimizer::PNGQuantOptimizer.new(path, options) }
7
8
  after { ImageOptimizer::PNGQuantOptimizer.instance_variable_set(:@bin, nil) }
8
9
  subject { pngquant_optimizer.optimize }
9
10
 
@@ -13,8 +14,8 @@ describe ImageOptimizer::PNGQuantOptimizer do
13
14
  end
14
15
 
15
16
  it 'optimizes the png' do
16
- optimizer_options = %w[--skip-if-larger --speed\ 1 --force --verbose --ext\ .png --quality\ 100 /path/to/file.png]
17
- expect(pngquant_optimizer).to receive(:system).with('/usr/local/bin/pngquant', *optimizer_options)
17
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100 /path/to/file.png]
18
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
18
19
  subject
19
20
  end
20
21
 
@@ -28,18 +29,46 @@ describe ImageOptimizer::PNGQuantOptimizer do
28
29
  end
29
30
 
30
31
  it 'should optimize using the given path' do
31
- optimizer_options = %w[--skip-if-larger --speed\ 1 --force --verbose --ext\ .png --quality\ 100 /path/to/file.png]
32
- expect(pngquant_optimizer).to receive(:system).with(image_pngquant_bin_path, *optimizer_options)
32
+ expected_cmd = %w[--skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100 /path/to/file.png]
33
+ expect(pngquant_optimizer).to receive(:system).with(image_pngquant_bin_path, *expected_cmd)
33
34
  subject
34
35
  end
35
36
  end
36
37
 
37
38
  context 'with quality parameter' do
38
- let(:options) { { :quality => 100 } }
39
+ let(:options) { { :quality => 99 } }
39
40
 
40
41
  it 'optimizes the png with the quality' do
41
- optimizer_options = %w[--skip-if-larger --speed\ 1 --force --verbose --ext\ .png --quality\ 100 /path/to/file.png]
42
- expect(pngquant_optimizer).to receive(:system).with('/usr/local/bin/pngquant', *optimizer_options)
42
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=99 /path/to/file.png]
43
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
44
+ subject
45
+ end
46
+ end
47
+
48
+ context 'with quiet parameter' do
49
+ let(:options) { { :quiet => true } }
50
+
51
+ it 'optimizes the png with the quality' do
52
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --ext=.png --quality=100 /path/to/file.png]
53
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
54
+ subject
55
+ end
56
+ end
57
+
58
+ context 'with ignore parameter' do
59
+ let(:options) { { :ignore => :pngquant } }
60
+ it 'does not optimize the png' do
61
+ expect(pngquant_optimizer).not_to receive(:system)
62
+ subject
63
+ end
64
+ end
65
+
66
+ context 'with space in file name' do
67
+ let(:path) { '/path/to/file 2.png' }
68
+
69
+ it do
70
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100]
71
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd, path)
43
72
  subject
44
73
  end
45
74
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,36 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_optimizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Tescher
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDdDCCAlygAwIBAgIBATANBgkqhkiG9w0BAQUFADBAMRIwEAYDVQQDDAlqYXRl
14
- c2NoZXIxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
15
- bTAeFw0xNjA5MjYxNzU4NTRaFw0xNzA5MjYxNzU4NTRaMEAxEjAQBgNVBAMMCWph
16
- dGVzY2hlcjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYD
17
- Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7ptCQvN739Rjos4e
18
- G2Y8uGCQxpBoXozU36PXLtR5ws7aly1QV0zRc1cy7nKnOSnXn7dEfbLGZS6/87pM
19
- rDFFszHsn/dizlXe3wejHePyG1EsYnIezISP9YSDcm7qpysrUAa2fKPqqZ6DNbIP
20
- 6wRF9Cun4hvmQPDrs0zKU6p43XHnJUg7YBYCOVACa7eFD1EOya+599hFMhnWChvT
21
- rKkVc/JRvmKYLIkB6Y6N3TFrVi9x0Qpo4fjG5rQ9xxNZhpFIOMJ0VJbuRSIMlLwr
22
- Ryd/QG0BcvkSHph/ZDlgfZ1V/lzWWq+mZOt/U+t6cVITSET5XDzHkeZ0BodGyAMr
23
- lZpggQIDAQABo3kwdzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
24
- QLcGxzEu2F2XI+3tIWSu8KqAFrkwHgYDVR0RBBcwFYETamF0ZXNjaGVyQGdtYWls
25
- LmNvbTAeBgNVHRIEFzAVgRNqYXRlc2NoZXJAZ21haWwuY29tMA0GCSqGSIb3DQEB
26
- BQUAA4IBAQCh9hDqN3lZw0PLVkXVcnwnl3KAjJfwCwk1okeuJ+IeQSfRLPp2ECLn
27
- j87oXZPcBukPB0/zTHcF/eBPIGvOedqVhp9SEar51dXLdiCe+deXx/bI3YMRdTGH
28
- 6NtqR6hWjm+hzBthxDsKhmQRczJ+5FNzAoW+pzf7ouKGfeFiFPwvAMolzsi2T+O/
29
- AmsZcBYVI8HbrnuoQI30XfdhNoRrKhoMyzAyVdWX9xQW56TWUO+o8iXBKjOxX2C5
30
- 8lVFrLvGNGPCLQmEf498hBYT99EVYiuiI0F7YlTmBdzL1uwTMk5le/b0NguYdSJ7
31
- qKlUP9usSwMVc+qmaOg1EYfPGYvt63qS
13
+ MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdqdWxp
14
+ YW4vREM9dGVzY2hlci9EQz1tZTAeFw0yMjAxMTAxNTMyMzFaFw0yMzAxMTAxNTMy
15
+ MzFaMCIxIDAeBgNVBAMMF2p1bGlhbi9EQz10ZXNjaGVyL0RDPW1lMIIBojANBgkq
16
+ hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2NIqnCAvdqMziQRxhBrjOOEy/bpjVakN
17
+ 4SY7DxGzx2C7nSTmIS8KDNVJMJJu+1SjsrE7zZR4YGXsn5EWC9byjUlEbIr+bcYX
18
+ Kqez1qWEAF5bAHCi2aIQV7DL6EjhuuhHszK921VK52m9/kfLzCGojM+dQGhxsS9R
19
+ uK8NMZvOnBprEblr58iD9b7wp7Nw8zl3HeYi7QEhFL9wQcIQTtACiRxim+0N0XXK
20
+ W9Fwk3gB8UaiWEwNdaZJ360+YubO1Q+9/6XnItDl8rvyyzkkPk8qTbqBxo+9qExk
21
+ dQkaJM2a4u0KBbdpMzSH05lcaHsitvaj9v3OXgXcX1JCJ8PfvjMkRVOj6p490Wv5
22
+ jgtJ8WsaJuJ0Z8AZK5LdD0DJPEH2ne54IKULsg0+G+kc7TGApxkQ9guJ3DYFMCww
23
+ NvTZhT5wdoKYi2EmWIMick8NiVWU8JHolHAjWHAMnnzLu1MeQEQdNIcU7+q4Vsti
24
+ qNQDKfsF14EBoUrdVQw7GhM0YsDflP9vAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
25
+ VR0PBAQDAgSwMB0GA1UdDgQWBBSjYnqpiURz0CR8srSqAJbZhlIx3TAcBgNVHREE
26
+ FTATgRFqdWxpYW5AdGVzY2hlci5tZTAcBgNVHRIEFTATgRFqdWxpYW5AdGVzY2hl
27
+ ci5tZTANBgkqhkiG9w0BAQsFAAOCAYEANc6i+QIto8zFj+y2rHpz197Dg8nYtHnr
28
+ LjEeNCm3JPyTZNDXbs/W+GArMiukQ3GkIdDgx+e+Q3h8FMdO5L5ObRNeGmBDyEyG
29
+ M8ubpHxacemSZkfmVyNkDBWOFYQYMJaC2TgmnUnRe5IAuOuWRgvC4kvb1blTsqbP
30
+ jNDn4Z2FofVroUQsPD8lVw27cUsoA2SmFnS+8ThqVsn/CIEoLkIkOWElAaKqa4z9
31
+ xU/u+8Mi2o2ndq1k5/WvYn2AAEm+DjJ5jPkSeepYdlNe2ogEeGcWEFmyDJfr0vK3
32
+ VokEpOHGpz1/CiJnJ08xTGCLOZ13dtclzhILRsP7tTh8+c9XB4SkmuX37dazBUu0
33
+ pdTkZA65Y5/zNsW4BLHc8h6TyXqpmv6giWKOm6gHdWVrhuVM9GGR4gIJyI5UFISg
34
+ HgI9vJ9QNRAdHzkP6ToW7r3j6nuszBAcnvJHU+MnONH9mGe7EWado06XjFAgrcA/
35
+ 47H47vSiiTIz55uAos1d8U8682yHT1SQ
32
36
  -----END CERTIFICATE-----
33
- date: 2016-11-15 00:00:00.000000000 Z
37
+ date: 2022-01-10 00:00:00.000000000 Z
34
38
  dependencies:
35
39
  - !ruby/object:Gem::Dependency
36
40
  name: rspec
@@ -111,6 +115,7 @@ extra_rdoc_files: []
111
115
  files:
112
116
  - ".gitignore"
113
117
  - ".travis.yml"
118
+ - CHANGELOG.md
114
119
  - Gemfile
115
120
  - LICENSE.txt
116
121
  - README.md
@@ -128,6 +133,10 @@ files:
128
133
  - checksum/image_optimizer-1.6.0.gem.sha512
129
134
  - checksum/image_optimizer-1.6.1.gem.sha512
130
135
  - checksum/image_optimizer-1.7.0.gem.sha512
136
+ - checksum/image_optimizer-1.7.1.gem.sha512
137
+ - checksum/image_optimizer-1.7.2.gem.sha512
138
+ - checksum/image_optimizer-1.8.0.gem.sha512
139
+ - checksum/image_optimizer-1.9.0.gem.sha512
131
140
  - image_optimizer.gemspec
132
141
  - lib/image_optimizer.rb
133
142
  - lib/image_optimizer/gif_optimizer.rb
@@ -149,7 +158,7 @@ homepage: https://github.com/jtescher/image_optimizer
149
158
  licenses:
150
159
  - MIT
151
160
  metadata: {}
152
- post_install_message:
161
+ post_install_message:
153
162
  rdoc_options: []
154
163
  require_paths:
155
164
  - lib
@@ -164,9 +173,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
173
  - !ruby/object:Gem::Version
165
174
  version: '0'
166
175
  requirements: []
167
- rubyforge_project:
168
- rubygems_version: 2.5.1
169
- signing_key:
176
+ rubygems_version: 3.2.3
177
+ signing_key:
170
178
  specification_version: 4
171
179
  summary: Simply optimize images via jpegoptim or OptiPNG or Gifsicle
172
180
  test_files:
metadata.gz.sig CHANGED
Binary file