module BasePresenter::ApplicationHelper

Public Instance Methods

present(object_or_class, klass = nil) { |presenter| ... } click to toggle source
# File lib/base_presenter/application_helper.rb, line 2
def present(object_or_class, klass = nil, &block)
  presenter = nil

  if object_or_class.methods.include?(:new)
    klass ||= "#{object_or_class}Presenter".constantize
    presenter = klass
    presenter.initialize(object_or_class, self)
  else
    klass ||= "#{object_or_class.class}Presenter".constantize
    presenter = klass.new(object_or_class, self)
  end

  if block_given?
    block.arity > 0 ? yield(presenter) : presenter.instance_eval(&block)
  end

  return presenter
end