middleman-imageoptim 0.1.0 → 0.1.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.
data/.cane ADDED
@@ -0,0 +1,4 @@
1
+ --abc-max 10
2
+ --gte coverage/covered_percent,74
3
+ --no-style
4
+ --color
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ Gemfile.lock
3
3
  pkg
4
4
  .bundle
5
5
  bin
6
+ coverage
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ bundler_args: --binstubs
3
+ rvm:
4
+ - 2.0.0
5
+ - 1.9.3
6
+ after_success:
7
+ - script/quality
8
+ matrix:
9
+ include:
10
+ - rvm: 2.0.0
11
+ env: COVERAGE=true
data/README.md CHANGED
@@ -4,6 +4,11 @@
4
4
 
5
5
  Serving big images is fo numb-skulls! Compress and optimise your imagery during `middleman build` by running [image_optim](https://github.com/toy/image_optim) over it. Yay-hooray!
6
6
 
7
+ [![Build Status](https://travis-ci.org/plasticine/middleman-imageoptim.png?branch=master)](https://travis-ci.org/plasticine/middleman-imageoptim)
8
+ [![Coverage Status](https://coveralls.io/repos/plasticine/middleman-imageoptim/badge.png)](https://coveralls.io/r/plasticine/middleman-imageoptim)
9
+ [![Gem Version](https://badge.fury.io/rb/middleman-imageoptim.png)](http://badge.fury.io/rb/middleman-imageoptim)
10
+ [![Dependency Status](https://gemnasium.com/plasticine/middleman-imageoptim.png)](https://gemnasium.com/plasticine/middleman-imageoptim)
11
+
7
12
  ![](http://cl.ly/image/0h0b330F2p3C/Terminal%20%E2%80%94%20zsh%20%E2%80%94%20109%C3%9712.png)
8
13
 
9
14
  ## Installation
@@ -11,7 +16,7 @@ Serving big images is fo numb-skulls! Compress and optimise your imagery during
11
16
  Go set up the [image_optim](https://github.com/toy/image_optim) external utilities, then;
12
17
 
13
18
  ```ruby
14
- gem "middleman-imageoptim", "~> 0.1.0"
19
+ gem "middleman-imageoptim", "~> 0.1.1"
15
20
  ```
16
21
 
17
22
  ## Usage
@@ -51,7 +56,10 @@ end
51
56
 
52
57
  ## Changelog
53
58
 
59
+ ##### `0.1.1`
60
+ - remove legacy requirement for padrino
61
+
54
62
  ##### `0.1.0`
55
63
  - complete refactor and clean-up
56
64
  - introduced an options class. options now work (lol, yay!), thanks @andrew-aladev for your help there
57
- - change of extension activation name from `:image_optim to `:imageoptim` for consistency with internal naming
65
+ - change of extension activation name from `:image_optim` to `:imageoptim` for consistency with internal naming
data/Rakefile CHANGED
@@ -12,8 +12,9 @@ namespace :spec do
12
12
  desc "Run cane to check quality metrics"
13
13
  Cane::RakeTask.new(:quality) do |cane|
14
14
  cane.abc_max = 10
15
- cane.add_threshold 'coverage/covered_percent', :>=, 100
15
+ cane.add_threshold 'coverage/covered_percent', :>=, 74
16
16
  cane.no_style = true
17
+ cane.abc_exclude = %w(Middleman::Imageoptim::Optimizer#optimizer)
17
18
  end
18
19
 
19
20
  task :default => :quality
@@ -1,6 +1,8 @@
1
1
  require "middleman-core"
2
2
 
3
3
  module Middleman
4
+
5
+ # Middleman extension entry point
4
6
  module Imageoptim
5
7
  class << self
6
8
  def registered(app, options_hash = {}, &block)
@@ -2,11 +2,10 @@ module Middleman
2
2
  module Imageoptim
3
3
  require "image_optim"
4
4
  require "fileutils"
5
- require "padrino-helpers"
6
5
 
6
+ # Optimizer class that accepts an options object and processes files and
7
+ # passes them off to image_optim to be processed
7
8
  class Optimizer
8
- include ::Padrino::Helpers::NumberHelpers
9
-
10
9
  def initialize(app, builder, options)
11
10
  @app = app
12
11
  @builder = builder
@@ -19,7 +18,7 @@ module Middleman
19
18
  optimizer.optimize_images(images_to_optimize) {|src_file, dst_file|
20
19
  if dst_file
21
20
  @total_savings += (src_file.size - dst_file.size)
22
- say_status "#{src_file} (#{percentage_change(src_file.size, dst_file.size)} / #{format_size((src_file.size - dst_file.size))} #{size_change_word(src_file.size, dst_file.size)})"
21
+ say_file_size_stats(src_file, dst_file)
23
22
  FileUtils.mv dst_file, src_file
24
23
  elsif @options.verbose
25
24
  say_status "[skipped] #{src_file}"
@@ -28,16 +27,6 @@ module Middleman
28
27
  say_status "Total image savings: #{format_size(@total_savings)}"
29
28
  end
30
29
 
31
- def say_status(status)
32
- if @builder
33
- @builder.say_status :image_optim, status
34
- end
35
- end
36
-
37
- def file_paths
38
- ::Middleman::Util.all_files_under(@app.inst.build_dir)
39
- end
40
-
41
30
  def filter_file_paths(paths)
42
31
  paths.select {|path|
43
32
  is_image_extension(path.extname) && image_is_optimizable(path)
@@ -52,10 +41,6 @@ module Middleman
52
41
  optimizer.optimizable?(path)
53
42
  end
54
43
 
55
- def format_size(bytes)
56
- number_to_human_size(bytes)
57
- end
58
-
59
44
  def size_change_word(size_src, size_dst)
60
45
  size_difference = (size_src - size_dst)
61
46
  if size_difference > 0
@@ -71,6 +56,25 @@ module Middleman
71
56
  '%.2f%%' % [100 - 100.0 * size_dst / size_src]
72
57
  end
73
58
 
59
+ private
60
+
61
+ def file_paths
62
+ ::Middleman::Util.all_files_under(@app.inst.build_dir)
63
+ end
64
+
65
+ def say_file_size_stats(src_file, dst_file)
66
+ file_percent_change = percentage_change(src_file.size, dst_file.size)
67
+ file_size_change = format_size((src_file.size - dst_file.size))
68
+ file_size_change_type = size_change_word(src_file.size, dst_file.size)
69
+ say_status "#{src_file} (#{file_percent_change} / #{file_size_change} #{file_size_change_type})"
70
+ end
71
+
72
+ def say_status(status)
73
+ if @builder
74
+ @builder.say_status :image_optim, status
75
+ end
76
+ end
77
+
74
78
  def optimizer
75
79
  @optimizer ||= ImageOptim.new(
76
80
  :nice => @options.nice,
@@ -84,6 +88,21 @@ module Middleman
84
88
  :gifsicle => @options.gifsicle_options
85
89
  )
86
90
  end
91
+
92
+ def format_size(bytes)
93
+ units = %W(B KiB MiB GiB TiB)
94
+
95
+ if bytes.to_i < 1024
96
+ exponent = 0
97
+ else
98
+ max_exp = UNITS.size - 1
99
+ exponent = (Math.log(bytes) / Math.log(1024)).to_i
100
+ exponent = max_exp if exponent > max_exp
101
+ bytes /= 1024 ** exponent
102
+ end
103
+
104
+ "#{bytes}#{UNITS[exponent]}"
105
+ end
87
106
  end
88
107
  end
89
108
  end
@@ -1,5 +1,8 @@
1
1
  module Middleman
2
2
  module Imageoptim
3
+
4
+ # An options store that handles default options will accept user defined
5
+ # overrides
3
6
  class Options
4
7
  attr_accessor :user_options
5
8
  attr_reader :verbose, :nice, :threads, :image_extensions,
@@ -1,6 +1,6 @@
1
1
  module Middleman
2
2
  module Imageoptim
3
3
  PACKAGE = 'middleman-imageoptim'
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
6
6
  end
@@ -19,10 +19,10 @@ Gem::Specification.new do |gem|
19
19
  gem.add_dependency "middleman-core", [">= 3.0"]
20
20
  gem.add_dependency "image_optim", "~> 0.9.1"
21
21
 
22
- gem.add_development_dependency "padrino-helpers"
23
22
  gem.add_development_dependency "rspec"
24
23
  gem.add_development_dependency "rake"
25
24
  gem.add_development_dependency "cucumber"
26
25
  gem.add_development_dependency "simplecov"
26
+ gem.add_development_dependency "coveralls"
27
27
  gem.add_development_dependency "cane"
28
28
  end
data/script/quality ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+
3
+ function run_command {
4
+ $1 || exit 1
5
+ }
6
+
7
+ run_command "rake spec:quality"
data/script/spec ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+
3
+ export COVERAGE=true
4
+
5
+ bundle --binstubs | grep -v '^Using'
6
+
7
+ rm -rf coverage
8
+
9
+ bin/rake
10
+
11
+ script/quality
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  if ENV['COVERAGE']
2
+ require_relative 'use_coveralls' if ENV['TRAVIS']
2
3
  require_relative 'use_simplecov'
3
4
  end
4
5
 
@@ -0,0 +1,2 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-imageoptim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -44,7 +44,7 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.9.1
46
46
  - !ruby/object:Gem::Dependency
47
- name: padrino-helpers
47
+ name: rspec
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
@@ -60,7 +60,7 @@ dependencies:
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  - !ruby/object:Gem::Dependency
63
- name: rspec
63
+ name: rake
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
@@ -76,7 +76,7 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  - !ruby/object:Gem::Dependency
79
- name: rake
79
+ name: cucumber
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
@@ -92,7 +92,7 @@ dependencies:
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  - !ruby/object:Gem::Dependency
95
- name: cucumber
95
+ name: simplecov
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
@@ -108,7 +108,7 @@ dependencies:
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  - !ruby/object:Gem::Dependency
111
- name: simplecov
111
+ name: coveralls
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
@@ -146,8 +146,10 @@ executables: []
146
146
  extensions: []
147
147
  extra_rdoc_files: []
148
148
  files:
149
+ - .cane
149
150
  - .gitignore
150
151
  - .rspec
152
+ - .travis.yml
151
153
  - Gemfile
152
154
  - LICENSE
153
155
  - README.md
@@ -159,9 +161,12 @@ files:
159
161
  - lib/middleman-imageoptim/version.rb
160
162
  - lib/middleman_extension.rb
161
163
  - middleman-imageoptim.gemspec
164
+ - script/quality
165
+ - script/spec
162
166
  - spec/spec_helper.rb
163
167
  - spec/unit/optimizer_spec.rb
164
168
  - spec/unit/options_spec.rb
169
+ - spec/use_coveralls.rb
165
170
  - spec/use_simplecov.rb
166
171
  homepage: https://github.com/plasticine/middleman-imageoptim
167
172
  licenses: []
@@ -177,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
182
  version: '0'
178
183
  segments:
179
184
  - 0
180
- hash: -1391481925218508789
185
+ hash: 3808513596251224587
181
186
  required_rubygems_version: !ruby/object:Gem::Requirement
182
187
  none: false
183
188
  requirements:
@@ -186,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
191
  version: '0'
187
192
  segments:
188
193
  - 0
189
- hash: -1391481925218508789
194
+ hash: 3808513596251224587
190
195
  requirements: []
191
196
  rubyforge_project:
192
197
  rubygems_version: 1.8.23