class Paperclip::Style
The Style class holds the definition of a thumbnail style, applying whatever processing is required to normalize the definition and delaying the evaluation of block parameters until useful context is available.
Attributes
Public Class Methods
Creates a Style object. name
is the
name of the attachment, definition
is the style definition
from has_attached_file, which can be string, array or hash
# File lib/dm-paperclip/style.rb, line 13 def initialize name, definition, attachment @name = name @attachment = attachment if definition.is_a? Hash @geometry = definition.delete(:geometry) @format = definition.delete(:format) @processors = definition.delete(:processors) @other_args = definition else @geometry, @format = [definition, nil].flatten[0..1] @other_args = {} end @format = nil if Paperclip::Ext.blank?(@format) end
Public Instance Methods
Supports getting and setting style properties with hash notation to ensure backwards-compatibility eg. @attachment.styles[:geometry]@ will still work
# File lib/dm-paperclip/style.rb, line 72 def [](key) if [:name, :convert_options, :whiny, :processors, :geometry, :format].include?(key) send(key) elsif defined? @other_args[key] @other_args[key] end end
# File lib/dm-paperclip/style.rb, line 80 def []=(key, value) if [:name, :convert_options, :whiny, :processors, :geometry, :format].include?(key) send("#{key}=".intern, value) else @other_args[key] = value end end
# File lib/dm-paperclip/style.rb, line 46 def convert_options attachment.send(:extra_options_for, name) end
returns the geometry string for this style if a proc has been supplied, we call it here
# File lib/dm-paperclip/style.rb, line 52 def geometry @geometry.respond_to?(:call) ? @geometry.call(attachment.instance) : @geometry end
Supplies the hash of options that processors expect to receive as their second argument Arguments other than the standard geometry, format etc are just passed through from initialization and any procs are called here, just before post-processing.
# File lib/dm-paperclip/style.rb, line 59 def processor_options args = {} @other_args.each do |k,v| args[k] = v.respond_to?(:call) ? v.call(attachment) : v end [:processors, :geometry, :format, :whiny, :convert_options].each do |k| (arg = send(k)) && args[k] = arg end args end
retrieves from the attachment the processors defined in the has_attached_file call (which method (in the attachment) will call any supplied procs) There is an important change of interface here: a style rule can set its own processors by default we behave as before, though.
# File lib/dm-paperclip/style.rb, line 32 def processors @processors || attachment.processors end
retrieves from the attachment the whiny setting
# File lib/dm-paperclip/style.rb, line 37 def whiny attachment.whiny end
returns true if we're inclined to grumble
# File lib/dm-paperclip/style.rb, line 42 def whiny? !!whiny end