module AutoPresenter

Constants

VERSION

Private Instance Methods

auto_present(instance_var_name) click to toggle source
# File lib/auto_presenter.rb, line 25
def auto_present(instance_var_name)
  var = instance_variable_get(instance_var_name)
  var_name = instance_var_name[1..-1] # without the @

  presenter = auto_presenter_for(var_name, var)

  if presenter
    presented_object = presenter.new(var)
    instance_variable_set(instance_var_name, presented_object)
  end
end
auto_present_instance_vars() click to toggle source
# File lib/auto_presenter.rb, line 17
def auto_present_instance_vars
  vars_to_present = instance_variables.collect(&:to_s).reject do |var_name|
    var_name.starts_with?('@_')
  end

  vars_to_present.each { |instance_var_name| auto_present(instance_var_name) }
end
auto_presenter_for(var_name, var) click to toggle source
# File lib/auto_presenter.rb, line 37
def auto_presenter_for(var_name, var)
  controller_presenter = "#{params[:controller]}/#{var_name}_presenter".camelize.safe_constantize

  return controller_presenter if controller_presenter

  if var.is_a?(ActiveRecord::Relation)
    RelationPresenter
  else
    class_name = var.class.name
    "#{class_name}Presenter".safe_constantize
  end
end
render(*args, &block) click to toggle source
Calls superclass method
# File lib/auto_presenter.rb, line 13
def render(*args, &block)
  run_callbacks(:render) { super }
end