enhance 0.0.6 → 0.0.7

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.
@@ -1,9 +1,11 @@
1
1
 
2
2
  class Enhance::Enhancer
3
3
 
4
+ Geometry = /^(?<geometry>(?<width>\d+)?x?(?<height>\d+)?([\>\<\@\%^!])?)(?<filter>sample)?$/
5
+
4
6
  def initialize app, root, options = {}
5
7
  @app = app
6
- @extensions = options[:extensions] || %w( jpg png )
8
+ @extensions = options[:extensions] || %w( jpg png jpeg gif )
7
9
  @routes = options[:routes] || %w( images )
8
10
  @folders = options[:folders] || [File.join(root, "public")]
9
11
  @quality = options[:quality] || 100
@@ -25,7 +27,10 @@ class Enhance::Enhancer
25
27
  end
26
28
 
27
29
  def _call env, matches
28
- request = @folders.collect_first{|f| File.join(f, matches['filename']) if File.exists?(File.join(f, matches['filename']))}
30
+ request = @folders.collect_first do |f|
31
+ f = File.join(f, matches['filename'])
32
+ File.exists?(f) ? f : nil
33
+ end
29
34
 
30
35
  if request && (filename = convert(request, matches['filename'], CGI.unescape(matches['geometry']))) && filename.gsub!(@file_root, '')
31
36
  env["PATH_INFO"] = filename
@@ -38,7 +43,7 @@ class Enhance::Enhancer
38
43
  # Finds the image and resizes it if needs be
39
44
  def convert path, filename, geometry
40
45
  # Extract the width and height
41
- if sizes = geometry.match(/^(?<width>\d+)?x?(?<height>\d+)?([\>\<\@\%^!])?$/)
46
+ if sizes = geometry.match(Geometry)
42
47
  w, h = sizes['width'], sizes['height']
43
48
  ow, oh = original_size path
44
49
 
@@ -58,7 +63,15 @@ class Enhance::Enhancer
58
63
  def resize source, destination, geometry
59
64
  FileUtils.mkdir_p File.dirname(destination)
60
65
 
61
- `#{@command_path}convert \"#{source}\" -resize \"#{geometry}\" -quality #{@quality} \"#{destination}\"` unless File.exists? destination
66
+ match = geometry.match Geometry
67
+
68
+ method = match['filter'] || 'resize'
69
+
70
+ unless File.exists?(destination) && File.mtime(destination) > File.mtime(source)
71
+ command = "#{@command_path}convert \"#{source}\" -#{method} \"#{match['geometry']}\" -quality #{@quality} \"#{destination}\""
72
+ puts command
73
+ `#{command}`
74
+ end
62
75
 
63
76
  destination
64
77
  end
@@ -1,3 +1,3 @@
1
1
  module Enhance
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
metadata CHANGED
@@ -1,113 +1,83 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: enhance
3
- version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 6
10
- version: 0.0.6
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Guillaume Malette
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-08-26 00:00:00 -04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-26 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: rack
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2169505760 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: utilities
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2169505760
25
+ - !ruby/object:Gem::Dependency
26
+ name: utilities
27
+ requirement: &2169505280 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
47
33
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: rack-test
51
34
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2169505280
36
+ - !ruby/object:Gem::Dependency
37
+ name: rack-test
38
+ requirement: &2169504820 !ruby/object:Gem::Requirement
53
39
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
61
44
  type: :development
62
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *2169504820
63
47
  description: Middleware to "enhance" and resize images on the fly.
64
48
  email: gmalette@gmail.com
65
49
  executables: []
66
-
67
50
  extensions: []
68
-
69
51
  extra_rdoc_files: []
70
-
71
- files:
52
+ files:
72
53
  - README
73
54
  - enhance.gemspec
74
55
  - lib/enhance.rb
75
56
  - lib/enhance/enhancer.rb
76
57
  - lib/enhance/urlhelper.rb
77
58
  - lib/enhance/version.rb
78
- has_rdoc: true
79
- homepage: ""
59
+ homepage: ''
80
60
  licenses: []
81
-
82
61
  post_install_message:
83
62
  rdoc_options: []
84
-
85
- require_paths:
63
+ require_paths:
86
64
  - lib
87
- required_ruby_version: !ruby/object:Gem::Requirement
65
+ required_ruby_version: !ruby/object:Gem::Requirement
88
66
  none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- hash: 3
93
- segments:
94
- - 0
95
- version: "0"
96
- required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
72
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- hash: 3
102
- segments:
103
- - 0
104
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
105
77
  requirements: []
106
-
107
78
  rubyforge_project:
108
- rubygems_version: 1.3.7
79
+ rubygems_version: 1.8.6
109
80
  signing_key:
110
81
  specification_version: 3
111
82
  summary: Image resizing on the fly
112
83
  test_files: []
113
-