Commit b66833e6 by Shinya Kasatani

respect :convert_options and :source_file_options in :styles hash

parent bc5c51d1
...@@ -18,6 +18,8 @@ module Paperclip ...@@ -18,6 +18,8 @@ module Paperclip
@geometry = definition.delete(:geometry) @geometry = definition.delete(:geometry)
@format = definition.delete(:format) @format = definition.delete(:format)
@processors = definition.delete(:processors) @processors = definition.delete(:processors)
@convert_options = definition.delete(:convert_options)
@source_file_options = definition.delete(:source_file_options)
@other_args = definition @other_args = definition
else else
@geometry, @format = [definition, nil].flatten[0..1] @geometry, @format = [definition, nil].flatten[0..1]
...@@ -46,11 +48,13 @@ module Paperclip ...@@ -46,11 +48,13 @@ module Paperclip
end end
def convert_options def convert_options
attachment.send(:extra_options_for, name) @convert_options.respond_to?(:call) ? @convert_options.call(attachment.instance) :
(@convert_options || attachment.send(:extra_options_for, name))
end end
def source_file_options def source_file_options
attachment.send(:extra_source_file_options_for, name) @source_file_options.respond_to?(:call) ? @source_file_options.call(attachment.instance) :
(@source_file_options || attachment.send(:extra_source_file_options_for, name))
end end
# returns the geometry string for this style # returns the geometry string for this style
......
...@@ -41,7 +41,9 @@ class StyleTest < Test::Unit::TestCase ...@@ -41,7 +41,9 @@ class StyleTest < Test::Unit::TestCase
:styles => { :styles => {
:foo => lambda{|a| "300x300#"}, :foo => lambda{|a| "300x300#"},
:bar => { :bar => {
:geometry => lambda{|a| "300x300#"} :geometry => lambda{|a| "300x300#"},
:convert_options => lambda{|a| "-do_stuff"},
:source_file_options => lambda{|a| "-do_extra_stuff"}
} }
} }
end end
...@@ -51,6 +53,8 @@ class StyleTest < Test::Unit::TestCase ...@@ -51,6 +53,8 @@ class StyleTest < Test::Unit::TestCase
assert_equal "300x300#", @attachment.options.styles[:bar].geometry assert_equal "300x300#", @attachment.options.styles[:bar].geometry
assert_equal [:test], @attachment.options.styles[:foo].processors assert_equal [:test], @attachment.options.styles[:foo].processors
assert_equal [:test], @attachment.options.styles[:bar].processors assert_equal [:test], @attachment.options.styles[:bar].processors
assert_equal "-do_stuff", @attachment.options.styles[:bar].convert_options
assert_equal "-do_extra_stuff", @attachment.options.styles[:bar].source_file_options
end end
end end
...@@ -177,4 +181,29 @@ class StyleTest < Test::Unit::TestCase ...@@ -177,4 +181,29 @@ class StyleTest < Test::Unit::TestCase
assert_equal [:test], @attachment.options.styles[:foo].processors assert_equal [:test], @attachment.options.styles[:foo].processors
end end
end end
context "An attachment with :convert_options and :source_file_options in :styles" do
setup do
@attachment = attachment :path => ":basename.:extension",
:styles => {
:thumb => "100x100",
:large => {:geometry => "400x400",
:convert_options => "-do_stuff",
:source_file_options => "-do_extra_stuff"
}
}
@file = StringIO.new("...")
@file.stubs(:original_filename).returns("file.jpg")
end
should "have empty options for :thumb style" do
assert_equal "", @attachment.options.styles[:thumb].processor_options[:convert_options]
assert_equal "", @attachment.options.styles[:thumb].processor_options[:source_file_options]
end
should "have the right options for :large style" do
assert_equal "-do_stuff", @attachment.options.styles[:large].processor_options[:convert_options]
assert_equal "-do_extra_stuff", @attachment.options.styles[:large].processor_options[:source_file_options]
end
end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment