image_resizer 0.3.0 → 0.4.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.
- data/Gemfile +3 -1
- data/Gemfile.lock +11 -1
- data/VERSION +1 -1
- data/image_resizer.gemspec +5 -4
- data/lib/image_resizer/processor.rb +2 -2
- data/lib/image_resizer/utils.rb +17 -5
- data/lib/image_resizer.rb +0 -1
- data/spec/image_resizer/processor_spec.rb +3 -1
- metadata +24 -15
- data/lib/image_resizer/shell.rb +0 -48
- data/spec/image_resizer/shell_spec.rb +0 -34
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,10 +1,18 @@
|
|
1
1
|
GEM
|
2
|
-
remote:
|
2
|
+
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
+
activesupport (3.2.12)
|
5
|
+
i18n (~> 0.6)
|
6
|
+
multi_json (~> 1.0)
|
4
7
|
binding_of_caller (0.6.7)
|
8
|
+
climate_control (0.0.3)
|
9
|
+
activesupport (>= 3.0)
|
10
|
+
cocaine (0.5.1)
|
11
|
+
climate_control (>= 0.0.3, < 1.0)
|
5
12
|
coderay (1.0.6)
|
6
13
|
diff-lcs (1.1.3)
|
7
14
|
git (1.2.5)
|
15
|
+
i18n (0.6.1)
|
8
16
|
jeweler (1.8.3)
|
9
17
|
bundler (~> 1.0)
|
10
18
|
git (>= 1.2.5)
|
@@ -12,6 +20,7 @@ GEM
|
|
12
20
|
rdoc
|
13
21
|
json (1.6.6)
|
14
22
|
method_source (0.7.1)
|
23
|
+
multi_json (1.6.1)
|
15
24
|
pry (0.9.8.4)
|
16
25
|
coderay (~> 1.0.5)
|
17
26
|
method_source (~> 0.7.1)
|
@@ -38,6 +47,7 @@ PLATFORMS
|
|
38
47
|
ruby
|
39
48
|
|
40
49
|
DEPENDENCIES
|
50
|
+
cocaine
|
41
51
|
jeweler
|
42
52
|
pry
|
43
53
|
pry-nav
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/image_resizer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "image_resizer"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Nelson"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-02-15"
|
13
13
|
s.description = "Image resizing gem (requires ImageMagick)"
|
14
14
|
s.email = "daniel@populr.me"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -33,7 +33,6 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/image_resizer/has_filename.rb",
|
34
34
|
"lib/image_resizer/loggable.rb",
|
35
35
|
"lib/image_resizer/processor.rb",
|
36
|
-
"lib/image_resizer/shell.rb",
|
37
36
|
"lib/image_resizer/temp_object.rb",
|
38
37
|
"lib/image_resizer/utils.rb",
|
39
38
|
"samples/DSC02119.JPG",
|
@@ -52,7 +51,6 @@ Gem::Specification.new do |s|
|
|
52
51
|
"spec/image_resizer/has_filename_spec.rb",
|
53
52
|
"spec/image_resizer/loggable_spec.rb",
|
54
53
|
"spec/image_resizer/processor_spec.rb",
|
55
|
-
"spec/image_resizer/shell_spec.rb",
|
56
54
|
"spec/image_resizer/temp_object_spec.rb",
|
57
55
|
"spec/spec_helper.rb",
|
58
56
|
"spec/support/argument_matchers.rb",
|
@@ -70,12 +68,14 @@ Gem::Specification.new do |s|
|
|
70
68
|
s.specification_version = 3
|
71
69
|
|
72
70
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
71
|
+
s.add_runtime_dependency(%q<cocaine>, [">= 0"])
|
73
72
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
74
73
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
75
74
|
s.add_development_dependency(%q<pry>, [">= 0"])
|
76
75
|
s.add_development_dependency(%q<pry-nav>, [">= 0"])
|
77
76
|
s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
|
78
77
|
else
|
78
|
+
s.add_dependency(%q<cocaine>, [">= 0"])
|
79
79
|
s.add_dependency(%q<rspec>, [">= 0"])
|
80
80
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
81
81
|
s.add_dependency(%q<pry>, [">= 0"])
|
@@ -83,6 +83,7 @@ Gem::Specification.new do |s|
|
|
83
83
|
s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
|
84
84
|
end
|
85
85
|
else
|
86
|
+
s.add_dependency(%q<cocaine>, [">= 0"])
|
86
87
|
s.add_dependency(%q<rspec>, [">= 0"])
|
87
88
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
88
89
|
s.add_dependency(%q<pry>, [">= 0"])
|
@@ -46,7 +46,7 @@ module ImageResizer
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def _resize(temp_object, geometry, format=nil)
|
49
|
-
convert(temp_object, "-resize #{geometry}", format)
|
49
|
+
convert(temp_object, "-resize '#{geometry}'", format)
|
50
50
|
end
|
51
51
|
|
52
52
|
def auto_orient(temp_object)
|
@@ -192,7 +192,7 @@ module ImageResizer
|
|
192
192
|
end
|
193
193
|
|
194
194
|
def rotate(temp_object, amount, opts={})
|
195
|
-
convert(temp_object, "-rotate #{amount}#{opts[:qualifier]}")
|
195
|
+
convert(temp_object, "-rotate '#{amount}#{opts[:qualifier]}'")
|
196
196
|
end
|
197
197
|
|
198
198
|
def strip(temp_object)
|
data/lib/image_resizer/utils.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'tempfile'
|
2
|
+
require 'cocaine'
|
2
3
|
|
3
4
|
module ImageResizer
|
4
5
|
module Utils
|
5
6
|
|
6
|
-
include Shell
|
7
7
|
include Loggable
|
8
8
|
include Configurable
|
9
9
|
configurable_attr :convert_command, "convert"
|
@@ -13,13 +13,24 @@ module ImageResizer
|
|
13
13
|
|
14
14
|
def convert(temp_object=nil, args='', format=nil)
|
15
15
|
tempfile = new_tempfile(format)
|
16
|
+
interpolation_data = {}
|
17
|
+
|
16
18
|
if temp_object.is_a?(Array)
|
17
|
-
|
18
|
-
|
19
|
+
temp_object.length.times { |index| interpolation_data["input#{index}".to_sym] = temp_object[index].path }
|
20
|
+
keys = interpolation_data.keys.map { |s| ":#{s}" }
|
21
|
+
args = "#{keys.join(' ')} #{args} :output"
|
22
|
+
elsif temp_object
|
23
|
+
interpolation_data[:input] = temp_object.path
|
24
|
+
args = ":input #{args} :output"
|
19
25
|
else
|
20
|
-
|
26
|
+
args = "#{args} :output"
|
21
27
|
end
|
22
28
|
|
29
|
+
interpolation_data[:output] = tempfile.path
|
30
|
+
|
31
|
+
line = Cocaine::CommandLine.new(convert_command, args)
|
32
|
+
line.run(interpolation_data)
|
33
|
+
|
23
34
|
tempfile
|
24
35
|
end
|
25
36
|
|
@@ -36,7 +47,8 @@ module ImageResizer
|
|
36
47
|
end
|
37
48
|
|
38
49
|
def raw_identify(temp_object, args='')
|
39
|
-
|
50
|
+
line = Cocaine::CommandLine.new(identify_command, "#{args} :input")
|
51
|
+
line.run(:input => temp_object.path)
|
40
52
|
end
|
41
53
|
|
42
54
|
def new_tempfile(ext=nil)
|
data/lib/image_resizer.rb
CHANGED
@@ -659,7 +659,9 @@ describe ImageResizer::Processor do
|
|
659
659
|
tempfile.stub(:path).and_return('output path')
|
660
660
|
|
661
661
|
@processor.stub(:new_tempfile).and_return(tempfile)
|
662
|
-
|
662
|
+
line = double(:line)
|
663
|
+
Cocaine::CommandLine.should_receive(:new).with('convert', ":input0 :input1 :output").and_return(line)
|
664
|
+
line.should_receive(:run).with(:input0 => 'hello world', :input1 => 'goodbye', :output => 'output path')
|
663
665
|
image = @processor.convert([image1, image2])
|
664
666
|
end
|
665
667
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: image_resizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: cocaine
|
16
|
+
requirement: &2153569580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2153569580
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: rspec
|
16
|
-
requirement: &
|
27
|
+
requirement: &2153568720 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ! '>='
|
@@ -21,10 +32,10 @@ dependencies:
|
|
21
32
|
version: '0'
|
22
33
|
type: :development
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153568720
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: jeweler
|
27
|
-
requirement: &
|
38
|
+
requirement: &2153567680 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: '0'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *2153567680
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: pry
|
38
|
-
requirement: &
|
49
|
+
requirement: &2153566740 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,10 +54,10 @@ dependencies:
|
|
43
54
|
version: '0'
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *2153566740
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: pry-nav
|
49
|
-
requirement: &
|
60
|
+
requirement: &2153565860 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ! '>='
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: '0'
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *2153565860
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: pry-stack_explorer
|
60
|
-
requirement: &
|
71
|
+
requirement: &2153563600 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,7 +76,7 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *2153563600
|
69
80
|
description: Image resizing gem (requires ImageMagick)
|
70
81
|
email: daniel@populr.me
|
71
82
|
executables: []
|
@@ -90,7 +101,6 @@ files:
|
|
90
101
|
- lib/image_resizer/has_filename.rb
|
91
102
|
- lib/image_resizer/loggable.rb
|
92
103
|
- lib/image_resizer/processor.rb
|
93
|
-
- lib/image_resizer/shell.rb
|
94
104
|
- lib/image_resizer/temp_object.rb
|
95
105
|
- lib/image_resizer/utils.rb
|
96
106
|
- samples/DSC02119.JPG
|
@@ -109,7 +119,6 @@ files:
|
|
109
119
|
- spec/image_resizer/has_filename_spec.rb
|
110
120
|
- spec/image_resizer/loggable_spec.rb
|
111
121
|
- spec/image_resizer/processor_spec.rb
|
112
|
-
- spec/image_resizer/shell_spec.rb
|
113
122
|
- spec/image_resizer/temp_object_spec.rb
|
114
123
|
- spec/spec_helper.rb
|
115
124
|
- spec/support/argument_matchers.rb
|
@@ -131,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
140
|
version: '0'
|
132
141
|
segments:
|
133
142
|
- 0
|
134
|
-
hash: -
|
143
|
+
hash: -2071369988750528339
|
135
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
145
|
none: false
|
137
146
|
requirements:
|
data/lib/image_resizer/shell.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'shellwords'
|
2
|
-
|
3
|
-
module ImageResizer
|
4
|
-
module Shell
|
5
|
-
|
6
|
-
include Configurable
|
7
|
-
configurable_attr :log_commands, false
|
8
|
-
|
9
|
-
# Exceptions
|
10
|
-
class CommandFailed < RuntimeError; end
|
11
|
-
|
12
|
-
def run(command, args="")
|
13
|
-
full_command = "#{command} #{escape_args(args)}"
|
14
|
-
log.debug("Running command: #{full_command}") if log_commands
|
15
|
-
begin
|
16
|
-
result = `#{full_command}`
|
17
|
-
rescue Errno::ENOENT
|
18
|
-
raise_shell_command_failed(full_command)
|
19
|
-
end
|
20
|
-
if $?.exitstatus == 1
|
21
|
-
throw :unable_to_handle
|
22
|
-
elsif !$?.success?
|
23
|
-
raise_shell_command_failed(full_command)
|
24
|
-
end
|
25
|
-
result
|
26
|
-
end
|
27
|
-
|
28
|
-
def raise_shell_command_failed(command)
|
29
|
-
raise CommandFailed, "Command failed (#{command}) with exit status #{$?.exitstatus}"
|
30
|
-
end
|
31
|
-
|
32
|
-
def escape_args(args)
|
33
|
-
args.shellsplit.map do |arg|
|
34
|
-
quote arg.gsub(/\\?'/, %q('\\\\''))
|
35
|
-
end.join(' ')
|
36
|
-
end
|
37
|
-
|
38
|
-
def quote(string)
|
39
|
-
q = running_on_windows? ? '"' : "'"
|
40
|
-
q + string + q
|
41
|
-
end
|
42
|
-
|
43
|
-
def running_on_windows?
|
44
|
-
ENV['OS'] && ENV['OS'].downcase == 'windows_nt'
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ImageResizer::Shell do
|
4
|
-
|
5
|
-
include ImageResizer::Shell
|
6
|
-
|
7
|
-
it "should raise an error if the identify command isn't found" do
|
8
|
-
suppressing_stderr do
|
9
|
-
lambda{
|
10
|
-
run "non-existent-command"
|
11
|
-
}.should raise_error(ImageResizer::Shell::CommandFailed)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "escaping args" do
|
16
|
-
{
|
17
|
-
%q(hello) => %q('hello'),
|
18
|
-
%q("hello") => %q('hello'),
|
19
|
-
%q('hello') => %q('hello'),
|
20
|
-
%q(he\'llo) => %q('he'\''llo'),
|
21
|
-
%q('he'\''llo') => %q('he'\''llo'),
|
22
|
-
%q("he'llo") => %q('he'\''llo'),
|
23
|
-
%q(hel$(lo)) => %q('hel$(lo)'),
|
24
|
-
%q(hel\$(lo)) => %q('hel$(lo)'),
|
25
|
-
%q('hel\$(lo)') => %q('hel\$(lo)')
|
26
|
-
}.each do |args, escaped_args|
|
27
|
-
it "should escape #{args.inspect} -> #{escaped_args.inspect}" do
|
28
|
-
pending "not applicable to windows" if running_on_windows?
|
29
|
-
escape_args(args).should == escaped_args
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|