Method: ModelFormatter.init_options

Defined in:
lib/model_formatter.rb

.init_options(defaults, model, attr) ⇒ Object

:nodoc:



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/model_formatter.rb', line 25

def self.init_options(defaults, model, attr) # :nodoc:
	options = defaults.dup
	options[:attr] = attr
	options[:prefix] ||= DEFAULT_FORMAT_PREFIX
	options[:formatted_attr] ||= "#{options[:prefix]}#{attr}"

	# If :as is set, then it must be either a formatter Class, formatter Object, Symbol, or String
	options[:formatter] = formatter_for(options[:as], options[:options]) unless options[:as].nil?

	# Define the formatter from a :block if :block is defined
	options[:formatter] = define_formatter(attr, &options[:block]) unless options[:block].nil?

	# Define :formatter from a block based on :from and :to if they're both set
	if !options[:from].nil? and !options[:to].nil?
		options[:formatter] = Module.new
		options[:formatter].class.send :define_method, :from, options[:from]
		options[:formatter].class.send :define_method, :to, options[:to]
	end

	# If :as is still not defined raise an error
	raise 'No formatting options have been defined.' if options[:formatter].nil?

	options
end