Commit b66833e6 by Shinya Kasatani

respect :convert_options and :source_file_options in :styles hash

parent bc5c51d1
......@@ -18,6 +18,8 @@ module Paperclip
@geometry = definition.delete(:geometry)
@format = definition.delete(:format)
@processors = definition.delete(:processors)
@convert_options = definition.delete(:convert_options)
@source_file_options = definition.delete(:source_file_options)
@other_args = definition
else
@geometry, @format = [definition, nil].flatten[0..1]
......@@ -46,11 +48,13 @@ module Paperclip
end
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
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
# returns the geometry string for this style
......
......@@ -41,7 +41,9 @@ class StyleTest < Test::Unit::TestCase
:styles => {
:foo => lambda{|a| "300x300#"},
:bar => {
:geometry => lambda{|a| "300x300#"}
:geometry => lambda{|a| "300x300#"},
:convert_options => lambda{|a| "-do_stuff"},
:source_file_options => lambda{|a| "-do_extra_stuff"}
}
}
end
......@@ -51,6 +53,8 @@ class StyleTest < Test::Unit::TestCase
assert_equal "300x300#", @attachment.options.styles[:bar].geometry
assert_equal [:test], @attachment.options.styles[:foo].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
......@@ -177,4 +181,29 @@ class StyleTest < Test::Unit::TestCase
assert_equal [:test], @attachment.options.styles[:foo].processors
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
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