image_optimizer 1.7.0 → 1.9.0
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +11 -0
- data/README.md +21 -11
- data/certs/jtescher.pem +23 -19
- data/checksum/image_optimizer-1.7.1.gem.sha512 +1 -0
- data/checksum/image_optimizer-1.7.2.gem.sha512 +1 -0
- data/checksum/image_optimizer-1.8.0.gem.sha512 +1 -0
- data/checksum/image_optimizer-1.9.0.gem.sha512 +1 -0
- data/lib/image_optimizer/image_optimizer_base.rb +12 -0
- data/lib/image_optimizer/jpeg_optimizer.rb +1 -1
- data/lib/image_optimizer/png_optimizer.rb +1 -1
- data/lib/image_optimizer/pngquant_optimizer.rb +8 -6
- data/lib/image_optimizer/version.rb +1 -1
- data/lib/image_optimizer.rb +9 -0
- data/spec/image_optimizer/gif_optimizer_spec.rb +8 -0
- data/spec/image_optimizer/jpeg_optimizer_spec.rb +20 -1
- data/spec/image_optimizer/png_optimizer_spec.rb +18 -0
- data/spec/image_optimizer/pngquant_optimizer_spec.rb +37 -8
- data.tar.gz.sig +0 -0
- metadata +34 -26
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 52ece0fb51c602d22fb7c82b8c14a1a47ad2972d6e925226994b8c656484e6cb
         | 
| 4 | 
            +
              data.tar.gz: 368aca1eb6b81221e1d130ca0d10490eab127a00a3b991bac4d2fc3bc75d32b7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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 | 
            -
            []
         | 
| 8 | 
            -
            ( | 
| 9 | 
            -
            []
         | 
| 12 | 
            -
            (https://codeclimate.com/github/jtescher/image_optimizer)
         | 
| 13 | 
            -
            []
         | 
| 14 | 
            -
            (https://coveralls.io/r/jtescher/image_optimizer)
         | 
| 7 | 
            +
            [](http://travis-ci.org/jtescher/image_optimizer)
         | 
| 8 | 
            +
            [](https://gemnasium.com/jtescher/image_optimizer)
         | 
| 9 | 
            +
            [](https://codeclimate.com/github/jtescher/image_optimizer/maintainability)
         | 
| 10 | 
            +
            [](https://coveralls.io/r/jtescher/image_optimizer)
         | 
| 15 11 | 
             
            [](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 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 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
         | 
| @@ -4,15 +4,17 @@ class ImageOptimizer | |
| 4 4 | 
             
              private
         | 
| 5 5 |  | 
| 6 6 | 
             
                def command_options
         | 
| 7 | 
            -
                  flags = ['--skip-if-larger', '--speed | 
| 8 | 
            -
                           '--force', '--verbose', '--ext | 
| 9 | 
            -
             | 
| 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  | 
| 14 | 
            -
                  return "--quality | 
| 15 | 
            -
                  "--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
         | 
    
        data/lib/image_optimizer.rb
    CHANGED
    
    | @@ -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(: | 
| 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 | 
            -
                     | 
| 17 | 
            -
                    expect(pngquant_optimizer).to receive(:system).with( | 
| 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 | 
            -
                       | 
| 32 | 
            -
                      expect(pngquant_optimizer).to receive(:system).with(image_pngquant_bin_path, * | 
| 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 =>  | 
| 39 | 
            +
                    let(:options) { { :quality => 99 } }
         | 
| 39 40 |  | 
| 40 41 | 
             
                    it 'optimizes the png with the quality' do
         | 
| 41 | 
            -
                       | 
| 42 | 
            -
                      expect(pngquant_optimizer).to receive(:system).with( | 
| 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. | 
| 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 | 
            -
               | 
| 14 | 
            -
               | 
| 15 | 
            -
               | 
| 16 | 
            -
               | 
| 17 | 
            -
               | 
| 18 | 
            -
               | 
| 19 | 
            -
               | 
| 20 | 
            -
               | 
| 21 | 
            -
               | 
| 22 | 
            -
               | 
| 23 | 
            -
               | 
| 24 | 
            -
               | 
| 25 | 
            -
               | 
| 26 | 
            -
               | 
| 27 | 
            -
               | 
| 28 | 
            -
               | 
| 29 | 
            -
               | 
| 30 | 
            -
               | 
| 31 | 
            -
               | 
| 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:  | 
| 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 | 
            -
             | 
| 168 | 
            -
             | 
| 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 |