class Presenter::Base
Public Class Methods
map(params)
click to toggle source
# File lib/presenter.rb, line 25 def self.map(params) params.each { |p| setup_attribute(p) } end
use(*presenters)
click to toggle source
# File lib/presenter.rb, line 29 def self.use(*presenters) params = presenters.each_with_object({}) do |id, p| p[id] = id end map params end
Private Class Methods
def_attribute_reader(attribute, presenter_method)
click to toggle source
# File lib/presenter.rb, line 57 def self.def_attribute_reader(attribute, presenter_method) define_method(attribute) do presenter = send(presenter_method) presenter.value = __getobj__.send(attribute) presenter.output end end
def_presenter_accessor(presenter, method)
click to toggle source
# File lib/presenter.rb, line 48 def self.def_presenter_accessor(presenter, method) attr_writer method define_method(method) do instance_variable_get(:"@#{method}") || self.class.find_presenter(presenter) end end
find_presenter(presenter)
click to toggle source
# File lib/presenter.rb, line 65 def self.find_presenter(presenter) return presenter.new if presenter.is_a?(Class) base_class = presenter.to_s.capitalize.camelize Object.const_get("Presenter::#{base_class}").new end
setup_attribute(params)
click to toggle source
# File lib/presenter.rb, line 39 def self.setup_attribute(params) attribute, presenter = params presenter_name = presenter.is_a?(Class) ? presenter.__name__ : presenter method = "#{presenter_name}_presenter" def_presenter_accessor(presenter, method) def_attribute_reader(attribute, method) end