Method: ModelFormatter.formatter_for
- Defined in:
- lib/model_formatter.rb
.formatter_for(type_name, options = {}) ⇒ Object
Return the formatter for a class, formatter object, symbol, or string defining the name of a formatter class. If it’s a symbol, check the Formatters module for the class that matches the camelized name of the symbol with ‘Format’ prepended. Options hash is passed to the instantiation of the formatter object.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/model_formatter.rb', line 74 def self.formatter_for(type_name, = {}) # :nodoc: # If the type_name is an instance of a formatter, just return with it return type_name if type_name.is_a? Formatters::Format # If the type_name is a class just assign it to the formatter_class for instantiation later formatter_class = type_name if type_name.is_a? Class # Format a symbol or string into a formatter_class if type_name.is_a? Symbol or type_name.is_a? String type_name = type_name.to_s.camelize # Construct the class name from the type_name formatter_name = "Format#{type_name}" formatter_class = nil begin formatter_class = Formatters.const_get(formatter_name) rescue NameError => ne # Ignore this, caught below end end # Make sure the name of this is found in the Formatters module and that # it's the correct superclass return formatter_class.new() unless formatter_class.nil? or formatter_class.superclass != Formatters::Format raise Formatters::FormatNotFoundException.new("Cannot find formatter 'Formatters::#{formatter_name}'") end |